AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi RunAs Dialog vor dem Programmstart???
Thema durchsuchen
Ansicht
Themen-Optionen

RunAs Dialog vor dem Programmstart???

Ein Thema von Piro · begonnen am 8. Mär 2006 · letzter Beitrag vom 4. Mai 2006
 
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#26

Re: RunAs Dialog vor dem Programmstart???

  Alt 21. Mär 2006, 23:08
ja sowas wäre echt gut.
Das Programm nutzt immer nur dann höhere Rechte, wenn diese notwendig sind.

z.b.
Delphi-Quellcode:
unit SimpleRights

type
   TRightInfo = record
     noch ein paar Infos hier über die Rechte
   end;

   TOnPrivExecute = procedure (Sender: TObject; RightsInfo : TRightsInfo; UserData : Pointer) of object;

{Führt OnPrivExecute aus auf zwei Wegen aus:
1. Der Benutzer hat bereits die notwendigen Privilegien => OnPrivExecute wird einfach aufgerufen
2. Der Benutzer hat nicht die notwendigen Privilegien =>
    Ein LoginDialog wird angezeigt und im Erfolgsfall wird OnPrivExecute aufgerufen.
   
}


function ExecutePrivilegedUser(Sender: TObject; OnPrivExecute : TOnPrivExecute; UserData : Pointer; <*> ForceShowLoginDlg : Boolean = false) : Boolean;
...
<*>Hier sollten weitere Parameterstrukturen rein,
die es ermöglichen anzugeben, welche Privilegien (Administrator?) nötig sind, um OnPrivExecute auszuführen.
Sowie die Dialogeinstellungen.



function ExecutePrivilegedUser(Sender: TObject; OnPrivExecute : TOnPrivExecute; UserData : Pointer; <*> ForceShowLoginDlg : Boolean = false) : Boolean;
var
  AdminToken : Cardinal;
begin
  hier noch überprüfen ob Benutzer genug Rechte hat
  ---> aber wie? vermutlich dieser link:
  [url]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthz/security/accesscheck.asp[/url]

und ggf. den RunAsDialog (selbstgemacht) anzeigen für die Eingaben (<USERNAME,<DOMAIN>,...)
  
   
if LogonUser(PAnsiChar(<USERNAME>), // UserName
             PAnsiChar(<DOMAIN>), // Domäne oder lokaler Rechner
             PAnsiChar(<PASSWORD>), // Password
             <LOGON32_LOGON_BATCH or LOGON32_LOGON_NETWORK or LOGON32_LOGON_INTERACTIVE>,
             <LOGON32_PROVIDER_DEFAULT>,
             AdminToken)
then begin
       if ImpersonateLoggedOnUser(AdminToken)
       then begin
              // hier kommt Dein Prog.-Code hin
              try
                OnPrivExecute(Sender,...,UserData);
              finally
                RevertToSelf; // zurückschalten zum angemeldeten Benutzer
              end;
              
            end;
     end;
end;






unit FormTest;
...

procedure TForm.OnMyPrivExecute (Sender : TObject; RightsInfo : TRightsInfo; UserData : Pointer);
begin
  //hier mit anderen Rechten arbeiten
end;

procedure TForm1.ButtonClick(...)
var MyData : Pointer;
begin
  MyData := nil;
  if ExecutePrivilegedUser(Self,OnMyPrivExecute,...[benötigte Rechte],MyData) then
    //ok
  else
    //abbruch
end;
Was haltet ihr von dieser Hülle?


Hier noch ein paar must see links:
http://msdn.microsoft.com/library/de..._reference.asp
http://msdn.microsoft.com/library/de..._functions.asp

Wie man Adminrechte erkennt:
http://www.delphi-fundgrube.de/faq13.htm#topic1315
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
 


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 21:02 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