Einzelnen Beitrag anzeigen

Dezipaitor

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

Re: Programm von Dienst starten lassen (Jetzt aber wirklich

  Alt 23. Mai 2008, 10:10
CreateWTSQueryUserTokenEx funktioniert nur unter Windows 2000. Unter XP kann es funkzen, muss aber nicht. Unter Vista funktioniert es nicht!

Damit dieser Desktopwechsel unter Vista nicht auftritt, musst man die TokenSessionID (Property) auf die jeweilige ID des Users setzen und dann damit das Programm starten.

Delphi-Quellcode:
var T,t2 : TJwSecurityToken;
   S : TStartupInfo;
   P : TProcessInformation;
begin
  T := TJwSecurityToken.CreateTokenEffective(MAXIMUM_ALLOWED);
  T2 := TJwSecurityToken.CreateDuplicateExistingToken(T.TokenHandle, MAXIMUM_ALLOWED);
  //
  T2.TokenSessionId := 2;

  ZeroMemory(@S, Sizeof(S));
  S.cb := sizeof(S);
  CreateProcessAsUser(T2.TokenHandle,'C:\Windows\system32\cmd.exe',nil,nil,nil,false, 0, nil, nil, S,P);
  ...
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat