Hi,
ist der unten beschriebene Code möglich. Besonders interessant, wäre zu wissen ob der ELSE Bereich möglich ist. Und besonders wie?
Delphi-Quellcode:
program Project1;
uses
Windows,
SysUtils,
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
var
AdminToken : Cardinal;
ComputerName : string;
begin
ComputerName := UpperCase(GetEnvironmentVariable('COMPUTERNAME'));
if LogonUser(PAnsiChar(UserName), //UserName
PAnsiChar(ComputerName), // 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
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end
else
begin
...
<Code, damit das Programm mit Adminrechten initialisiert die Formen erstellt und gestartet wird>
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
RevertToSelf; // zurückschalten zum angemeldeten Benutzer
end;
end.
Code im ELSE Bereich: Gibt es irgendeinen Code, der das Programm initialisiert, die Formen erstellt und letztendlich das Program startet mit den lokalen Adminrechten, die mir bekannt sind?
Wäre für einen Ansatz dankbar. Habe schon fast das ganze Forum durch. Würde die Lösung mit einem 2. Programm, welches das Hauptprogramm mit Adminrechten aufruft vermeiden und alles schön in einem Programm haben.
Gruß, Sven