kl-a
Goto Top

Namen das lokalen Administratoren per Batch auslesen

Gibt es eine möglichkeit per Batchdatei den Namen des lokalen Administrators auszulesen, wenn z. Bsp. das Adminstratorkonto umbenannt wurde?

Ich möchte wenn ein user kein adminrechte hat, ein bestimmtes tool als lokaler Admin starten.

Soweit so gut.
Arbeite hierfür an einem batchscript.

prüfe mit dem tool isadmin.exe (oder so ähnlich, hab es gerade nicht zur hand) ob der user adminrechte hat, wenn ja = ok
wenn nicht, starte das tool mit runas , als lokaler admin.
funktioniert auch, so lange der lokale admin-account nicht umbenannt wurde.

wenn es keine einfache möglichkeit gibt, heraus zufinden wie der name des lokalen admins ist,
würde mir auch eine alternative lösung reichen.

hierfür gebe ich einfach die mitglieder der lokalen gruppe Administratoren aus, mit

net localgroup Administratoren

die ausgabe gefällt mir aber nicht, ist zwar nur ein optische problem, aber wenn es auch schöner geht.
beispiel f. die ausgabe:

Aliasname Administratoren
Beschreibung Administratoren haben uneingeschr"nkten Vollzugriff auf den Computer bzw. die Dom"ne.

Mitglieder

Admin
Max
Otto
Der Befehl wurde erfolgreich ausgefhrt.


wie kann ich nur die namen anzeigen lassen, ohne den ganzen unnötigen text.
das ganze sollte aber auch auf nicht deutschen betriebssytem laufen, d.h. der text wäre z. bsp. engl., französich usw.


gruss kl_A

Content-Key: 45826

Url: https://administrator.de/contentid/45826

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: Biber
Biber 01.12.2006 um 18:32:54 Uhr
Goto Top
Moin kl_A,

Am CMD-Prompt:
>for /f "delims= skip=5" %i in ('net localgroup Administratoren^|find /v "."') do @echo %i  

Als "Batch", falls es sich lohnt:
::-ListLocaladmins.bat
@for /f "delims= skip=5" %%i in ('net localgroup Administratoren^|find /v "."') do @echo %%i  

HTH Biber
[Edit] Nachtrag:
Da international wohl die Lokale Administratoren-Gruppe nicht immer "Administratoren" heißt, muss entweder noch eine Zeile vorgeschaltet werden [Denn mit "*Admin" fangen in Europa wohl alle an (?)]:
>for /f "tokens=1 delims=*" %a in ('net localgroup^|findstr /i "^\*Admin"') do @echo %a  
Administratoren

-oder-
sinnigerweise über 10 Zeilen VBS statt über eine Batchzeile gegangen werden.
(/Edit]
Mitglied: kl-A
kl-A 01.12.2006 um 21:18:48 Uhr
Goto Top
hi biber,

danke f. die schnelle antwort,....und das am freitag abend!!!

werde das mal testen.

was die administratoren gruppe f. andersprachl. betriebssysteme angeht, das ist recht einfach zu lösen, da diese gruppe immer die selbe SID S-1-5-32-544 hat.
mit psgetsid kann ich den namen ermitteln, hier mal ein codeschnipsel.


psgetsid S-1-5-32-544 >%temp%\sid.txt

findstr /R "Alias:" %temp%\sid.txt >%temp%\sid2.txt

set /p Administratorgruppe= <%temp%\sid2.txt
:cutname
set testname=%Administratorgruppe%
set Administratorgruppe=%Administratorgruppe:*\=%
if not "%Administratorgruppe%"=="%testname%" goto :cutname
echo.%Administratorgruppe%


aber mir ist jetzt noch eine wahrscheinlich viel einfachere methode eingefallen.
habe jetzt hier zu hause nur einen pc, aber ich glaube die SID des lokalen Admin setzt sich aus der SID des Rechner plus der zahl -500 zusammen.

also könnte man mit psgetsid die SID des Rechner ermitteln die -500 anhängen und hätte die SID des lokalen admins, egal wie der name ist.

psgetsid %COMPUTERNAME% >%temp%\sid_machine.txt
findstr /R "S-1-5-21" %temp%\sid_machine.txt >%temp%\sid_machine2.txt


jetzt ne blöde frage. wie bekomme ich die -500 angehängt
mit:
echo -500>>%temp%\sid_machine2.txt
bekomme ich einen zeilenumbruch in die datei.
oder kann ich direkt eine variable setzen
set /P AdminSID=<%temp%\sid_machine2.txt plus die -500

gruss kl_A
Mitglied: Biber
Biber 03.12.2006 um 16:08:21 Uhr
Goto Top
Moin kl_A,
oder kann ich direkt eine variable setzen
set /P AdminSID=<%temp%\sid_machine2.txt plus die -500

Ja, das geht relativ einfach:
set /P AdminSID=<%temp%\sid_machine2.txt
set "AdminSID=%AdminSID%-500"  

Gruß
Biber
Mitglied: Biber
Biber 04.12.2006 um 07:27:00 Uhr
Goto Top
Moin, kl_A,

Nachtrag:
Dieses "Set AdminSID=whatever" works as designed, sprich:
Es funktioniert natürlich, geht aber an der eigentlichen Frage voll vorbei.

Der User "Administrator", der seines Zeichens Lokaler Administrator auf der Maschine XYZ ist, hat in der Tat als SID die SID des Rechners plus eine angehängte "-500".
So weit weder Geheimnis noch Hexenwerk.

Die Localgroup "Administratoren" allerdings hat zwar einen ähnlich klingenden Namen und auch den Strich-500er-LocalAdmin als Member, aaaaaaaaaaaaaber hat als Well-Known-Sid eine andere:
SID for VORDEFINIERT\Administratoren:
S-1-5-32-544
Und das müsste die lokale Truppe sein, die bei "net localgroup Administratoren" angezeigt wird.

Grüße
Biber
Mitglied: kl-A
kl-A 04.12.2006 um 12:32:27 Uhr
Goto Top

Es funktioniert natürlich, geht aber an
der eigentlichen Frage
voll vorbei.

Grüße
Biber


Hi Biber,

den einwand verstehe ich nicht ganz.

mein ziel ist es, wenn der angemeldete user kein lokaler admin ist, ein tool als lokaler admin zu starten. auch dann wenn der lok. adminaccount umbenannt wurde. und das ist denek ich am einfachsten wenn man über die SID den namen des lok. admins herausbekommt.

hier meine lösung:

@echo off
setlocal

set DasTool=%windir%\tool.exe

:FIRSTSTEP
ISADMIN if errorlevel 1 goto ADMIN
goto NOADMIN

:ADMIN
%DasTool%
goto END

:NOADMIN
REM === SID des Rechners ermitteln
psgetsid %COMPUTERNAME% >%temp%\machine.sid
findstr /R "S-1-5-21" %temp%\machine.sid >%temp%\machine2.sid

REM === SID des lokalen Adminaccounts zusammen basteln,
REM === aus SID des Rechners plus der Zeichenfolge -500
set /P tmpAdminSID=<%temp%\machine2.sid
set tmpAdminSID=%tmpAdminSID%-500

REM === ermitteln des Namens des lokalen Adminaccounts
psgetsid %tmpAdminSID% >%temp%\admin.sid
findstr /R "User:" %temp%\admin.sid >%temp%\admin2.sid
set /p AdminSID=<%temp%\admin2.sid
:cut
set testSID=%AdminSID%
set AdminSID=%AdminSID:*\=%
if not "%AdminSID%"=="%testSID%" goto :cut

REM === Tool als lokaler admin starten
runas /noprofile /env /savecred /user:%Computername%\%AdminSID% %DasTool%
goto END

:END
del /Q %temp%\*.sid
ENDLOCAL
exit


wenn jemand hinweise, verbesserungsvorschläge hat bzw. fehler findet, bitte hier posten.

Gruss kl_A
Mitglied: Biber
Biber 04.12.2006 um 13:12:37 Uhr
Goto Top
Moin kl_A,
den einwand verstehe ich nicht ganz.
mein ziel ist es, wenn der angemeldete user kein lokaler admin ist,
ein tool als lokaler admin zu starten

Hast Recht, ich hatte überlesen, dass der Einsatz von IsAdmin.exe (oder ähnlichen) auch eine Alternative ist.
Ich war davon ausgegangen, dass Du die "Mitglieder" der LocalGroup "Administratoren" einzeln und per Namensvergleich abklapperst.

Wenn Du die Berechtigungsprüfung über ein schlichtes "IsAdmin" machst, dann ist dieser Aufruf natürlich international genug face-wink

Und der zweite Teil des Plans, dann das Tool mit der Strich-500er-AdministratorID zu starten, ist natürlich plausibel.

Mein Fehler.
Grüße
Biber