![]() |
Debuggen als Administrator
Hallo zusammen.
Ich programmiere mit Delphi als eingeschränkter Benutzer (Firmennetzwerk). Meine aktuelle Anwendung benötigt aber zwingend Admin-Rechte. Ich kann zwar mit "Ausführen als..." die Exe erfolgreich starten, habe dann aber keinen Debugger mehr. Gibt es keine Methode Delphi zu sagen, es solle das Programm unter anderen Anmeldeinformationen starten und debuggen? |
Re: Debuggen als Administrator
Hallo,
dein Programm sollte sich die Rechte nach Start holen, und zwar auch nur dann, wenn sie benötigt werden. Spätestens ab Visa ist das eh Standard. Also Bsp-weise für Setzen der Zeit.
Delphi-Quellcode:
if not SetPrivilege('SE_SYSTEMTIME_NAME', True) then
begin // logging end; try if SetLocalTime(tdtTime)=False then begin // logging ? end; finally SetPrivilege('SE_SYSTEMTIME_NAME', False); end;
Delphi-Quellcode:
{ Privileg setzen
für Zeit muß SE_SYSTEMTIME_NAME übergeben werden } function SetPrivilege(const sPrivilegeName: String; bEnabled : boolean): boolean; var TPPrev,TP : TTokenPrivileges; Token : THandle; dwRetLen : DWord; begin Result := False; try {$IFDEF VER90} { in Delphi2 ist OpenProcessToken mit PHandle deklariert } OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,@Token); {$ELSE} { in > Delphi2 ist OpenProcessToken mit var THandle deklariert } OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,Token); {$ENDIF} TP.PrivilegeCount := 1; if( LookupPrivilegeValue(Nil, PChar( sPrivilegeName ), TP.Privileges[ 0 ].LUID )) then begin if (bEnabled) then begin TP.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED; end else begin TP.Privileges[ 0 ].Attributes :=0; end; dwRetLen := 0; Result := AdjustTokenPrivileges(Token,False,TP,SizeOf( TPPrev ), TPPrev,dwRetLen ); end; CloseHandle( Token ); except end; end; Heiko |
Re: Debuggen als Administrator
@Heiko: Und was hat das mit dem Debuggen zu tun?
Hilft es eventuell, wenn du die IDE schon als Administrator startest? |
Re: Debuggen als Administrator
< Meine aktuelle Anwendung benötigt aber zwingend Admin-Rechte. >
Der Debugger läuft auch unter einem Standarduser (stand zumindestens im Entwickler). Ich entwickele z.B. nicht als Admin (hier unter w2k). Übrigens gibt es einen Artikel in der c't 23 (S. 214), er enthält aber kein Rechteholen-Code, dafür aber Literatur-Anhänge. Heiko |
Re: Debuggen als Administrator
Zitat:
@Luckie: Ich habs getestet. Die Projekte laufen als Unterprozesse der Delphi-IDE und "erben" natürlich auch den Benutzerkontext. Funktioniert also. (hätte man auch selbst drauf kommen können... manchmal können die Dinge so einfach sein :mrgreen: ). Nur ist Delphi unflexibel, weil ich alle Bibliothekspfade neu einrichten muss und die Registrierung von Turbo Delphi (hab auf der Arbeit kein BDS) auch noch Benutzerabhängig ist. Das kostet einfach nur Zeit und Nerven :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz