hoi kay.
vielleicht kannst du mir n tip geben.

wie kann ich herrausfinden das ein prozess mit bzw. ohne adminrechte läuft...
und ist das per cmd/WSH/powershell umsetzbar?
(wobei eine cmd lösung die idealste wäre)
15 Tage später
Sorry für die sehr späte Antwort... hatte viel um die Ohren.

Um die Rechte einer Anwendung auszulesen brauchst Du zunächst selbst Zugriff auf den Prozess.
Wenn SuRun einen Prozess startet, fügt es dessen Zugriffskontrolliste (DACL) einen Eintrag hinzu der dem eingeschränkten Benutzer exlizit den Lese/Schreib-Zugriff auf den Prozess selbst verweigert.
Davon, dass Du keinen Zugriff bekommst, kannst Du aber auch nicht darauf schließen, dass ein Prozess mit gehobenen Rechten läuft. Der ZoneAlarm Client ist so ein Beispiel.

Wenn Dein Script als Admin läuft, kannst Du leicht die Rechte auslesen... muss mal sehen, ob es da ein fertiges Tool gibt (SubInACL könnte gehen oder bei Sysinternals).
naja ich versuch immer "out of the box" scripte basteln,
wo man keine zusätzlichen tools braucht

naja werd mir halt ne windows-datei suchen,
die sich halt so verhält, dass ich meine rechte prüfen kann...

ne eligantere lösung gibt es für mich wohl nicht,
um auszulesen dass ich den admintoken bekommen habe...!?
11 Tage später
Dass Du einen Admin-Token hast, kannst Du z.B. mit sc.exe rausfinden:
@echo off
sc pause rpcss | find /i "failed 5:" >NUL
IF ERRORLEVEL 1 goto AdminUser
echo No Admin
goto Exitbat

:AdminUser
echo Admin
:Exitbat
ah ich sehe... programme die adminrechte verlangen kann man wunderbar zweckentfremden :P
Noch besser: "sc pause rpcss" funktioniert immer nicht.
Bei nicht-Administratoren ist der Fehler "5", Zugriff verweigert.
25 Tage später
habe gerade festgestellt, dass es für die NT5 linie nicht so klappt...
C:\>sc pause rpcss & echo.%errorlevel%
[SC] ControlService FAILED 1052:

The requested control is not valid for this service.

0
hmmm...
auch bei der schnellen eigabe bei Win7
C:\Users\MiC>sc pause rpcss & echo.%errorlevel%
[SC] OpenService FEHLER 5:

Zugriff verweigert

0
obwohl das script hier läuft... o.O
irgendetwas übersehe ich doch.


[edit:]
ich habe jetzt wie du die textausgabe verwendet,
aber das sich %errolevel% so seltsam verhaltet ist schon komisch...
da kann ich nur hoffen, dass die textausgabe so konstannt bleibt,
sonnst darf ich wieder OS-rezepte schreiben *g*

[edit2:]
habe gerade von einen französischen kollegen erfahren,
dass das nicht der admin-prüfroutine nicht so kappen wollte...
nach einer kleinen remotesitzung habe ich den fehler gefunden.
es lag an der französischen lokalisierung der textausgabe,
da hat sich ein leerzeichen zwischen zahl und doppelpunkt eingeschlichen,
welches das gesampte script blokiert...
C:\Users\Administrateur>sc pause rpcss
[SC] ControlService échec(s) 1052 :

La commande demandée n'est pas valide pour ce service.
ich will erst garnicht wissen wie es mit den anderen sprachen ausschaut...
kann man nicht die englische ausgabe erzwingen, ohne das ganze system auf englisch umzustellen?
Mist!
Man könnte doch aber nach "1052" suchen.
Das sollte auch in Chinesisch so sein:
[indent]
@echo off
sc pause rpcss | find /i "1052" >NUL
IF ERRORLEVEL 1 goto NoAdminUser
echo Admin
goto Exitbat

:NoAdminUser
echo No Admin
:Exitbat
[/indent]
ich habs so gelöst:
for /F %%a in ('sc pause rpcss ^| find /i /c " 1052"') do if "%%a"=="1" (goto :xRun)
for /F %%a in ('sc pause rpcss ^| find /i /c " 5"') do if "%%a"=="1" (goto :ADmake)
die funktion /c gibt die anzahl an zeilen aus die den wert beinhalten
nur eine zahl, leicht zu handhaben... :P

ich kann nur hoffen das es da keine weitere sprache gibt die nur aus zahlen besteht. :D
Eine Antwort schreiben…
Impressum, Datenschutz