AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Debuggen als Administrator

Ein Thema von Codewalker · begonnen am 7. Nov 2006 · letzter Beitrag vom 7. Nov 2006
Antwort Antwort
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#1

Debuggen als Administrator

  Alt 7. Nov 2006, 09:47
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?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Debuggen als Administrator

  Alt 7. Nov 2006, 10:08
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Debuggen als Administrator

  Alt 7. Nov 2006, 10:10
@Heiko: Und was hat das mit dem Debuggen zu tun?

Hilft es eventuell, wenn du die IDE schon als Administrator startest?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Debuggen als Administrator

  Alt 7. Nov 2006, 10:30
< 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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Debuggen als Administrator

  Alt 7. Nov 2006, 10:42
Zitat von hoika:
Der Debugger läuft auch unter einem Standarduser (stand zumindestens im Entwickler).
Ich entwickele z.B. nicht als Admin (hier unter w2k)Heiko
Das das geht ist mir schon klar. Delphi läuft auch so... nur mein eigenes Programm das ich gerade schreibe nicht. Diese müsste also mit RunAs gestartet werden. Das kann Delphi aber von Haus aus nicht.

@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 ).

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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz