Autor Beitrag
redbird
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38

Win XP, Vista Business (64bit), Win 7 Prof. (64bit)
Delphi 7, Java, PHP
BeitragVerfasst: Do 12.03.09 00:28 
Hi,

ich möchte ein Batchskript mit Admin Rechten ausführen.

Unter Vista funktioniert folgender Code problemlos, d.h. UAC fordert entsprechend Adminrechte:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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.
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Do 12.03.09 09:01 
Hi,

probiere mal den Sourcecode von Luckie aus. Habe den schon unter Windows XP und VISTA für Softwareverteilung eingesetzt.
redbird Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38

Win XP, Vista Business (64bit), Win 7 Prof. (64bit)
Delphi 7, Java, PHP
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: 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?