Entwickler-Ecke
Windows API - Batchskript mit Admin Rechten ausführen
redbird - Do 12.03.09 00:28
Titel: Batchskript mit Admin Rechten ausführen
Hi,
ich möchte ein Batchskript mit Admin Rechten ausführen.
Unter Vista funktioniert folgender Code problemlos, d.h. UAC fordert entsprechend Adminrechte:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var ShEx :TShellExecuteInfo;
FillChar(ShEx,SizeOf(ShEx),0); ShEx.cbSize:= SizeOf(ShEx); ShEx.Wnd:=Application.Handle; ShEx.fMask := SEE_MASK_FLAG_DDEWAIT OR SEE_MASK_FLAG_NO_UI; ShEx.lpVerb := 'runas'; ShEx.lpFile:=PChar(extractFilePath(Application.ExeName)+'\test.bat');
ShEx.nShow:=SW_SHOWNORMAL; if NOT ShellExecuteEx(@ShEx) then RaiseLastOSError; |
Unter Xp bekomme ich allerdings die Meldung "System Error: 1155. Der angegebenen Datei ist keine Anwendung zugeordnet".
Wie kann ich selbiges ändern?
Danke für eure Antworten,
redbird
jaenicke - Do 12.03.09 00:51
Die Angabe runas sollte unter XP eigentlich den Benutzerdialog anzeigen. Ich muss deinen Code mal kurz testen, ob das geht.
// EDIT:
Ok, also mit Batchdateien klappt das unter XP nicht, mit Exedateien schon. Du könntest ja nach Betriebssystem unterscheiden. Allerdings wäre dann unter XP das Problem nicht gelöst, wenn da die Rechte fehlen.
Irgendwie müsste das ja auch mit .bat Dateien gehen. :gruebel:
// EDIT2:
Ich sehe schon: In der Registry ist unter shell bei Batchdateien kein Handler für runas eingetragen. Bei Exes schon, da ist der Befehl dafür "%1" %*, wobei %1 der Dateiname ist. Hmm.
Was mir auffällt:
Du benutzt ExtractFilePath. Das hängt aber bereits ein \ an, du hast also ein doppeltes drin.
ExtractFileDir gibt den Pfad ohne zurück.
redbird - Mi 18.03.09 00:39
Hi,
danke für eure Antworten.
Wie es sich herausgestellt hat funktioniert meine oben erwähnte Methode nicht zuverlässig, daher werde ich wohl anstelle einer Batchdatei eine zweite Exe verwenden. Der kann dann auch gleich per Manifest entsprechende Rechte gegeben werden.
MfG
redbird
FinnO - Mo 23.03.09 18:52
Nur so als Frage:
Könnte man nicht der eigentlichen exe Admin-Rechte geben und dann die Batch-Datei ausführen? dann müsste die doch automatisch Admin-Rechte haben oder?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!