Einzelnen Beitrag anzeigen

azwa66

Registriert seit: 22. Mär 2004
38 Beiträge
 
#13

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 15:11
Ja, das geht. Da das Passwort für den Administrator dem Programm bekannt ist, kann sich das Programm ganz normal anmelden. Am einfachsten geht das mit CreateProcessWithLogonW. Es gibt auch ein entsprechendes Kommandozeilentool "runas".
Irgendwie bekomme ich das nicht hin! "Normale" Programm starten über CreateProcessWithLogonW aber eine setup.exe wird nicht ausgeführt!

Hier mal ein Codeschnipsel:

function CreateProcessWithLogonW(
lpUsername,
lpDomain,
lpPasswordWideChar;
dwLogonFlags:dword;
lpApplicationName: PWideChar;
lpCommandLine: PWideChar;
dwCreationFlags: DWORD;
lpEnvironment: Pointer;
lpCurrentDirectory: PWideChar;
const lpStartupInfo: tSTARTUPINFO;
var lpProcessInformation: TProcessInformation): BOOL; stdcall; external 'advapi32.dll';

function StartProgramm(Benutzer:string;Passwort:string;Doma in:string;EXE:string):boolean;
var
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
result:=false;
FillChar (StartupInfo, SizeOf(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
if CreateProcessWithLogonW(StringToOleStr(Benutzer),S tringToOleStr(Domain), StringToOleStr(Passwort), 0, StringToOleStr(Exe), nil, 0, nil, nil, StartupInfo, ProcessInfo) then
result:=true;
end;

Aufruf Startprogramm('admin', 'admin', '', 'c:\temp\test.exe') --> funktioniert
Aufruf Startprogramm('admin', 'admin', '', 'c:\temp\setup.exe') --> funktioniert nicht!!!

Mache ich da was falsch?

Hat jemand ein Beispiel für CreateProcessAsUser???

Danke
  Mit Zitat antworten Zitat