Also ich hab jetzt folgenden Code:
Delphi-Quellcode:
if not LogonUser(
PChar('Username'),
PChar('Workgroup'),
PChar('password'),
LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT,
token) then
Beep;
ZeroMemory( @si, sizeof(si) );
si.lpDesktop:=PChar('MyOwnDesktop');
si.cb := sizeof(si);
ZeroMemory( @pi, sizeof(pi) );
cf:=CREATE_NEW or CREATE_NEW_CONSOLE;
command:='E:\Programme\Programm.exe';
try
if not CreateProcessAsUser(
token,
nil,
PChar(command),
nil,
nil,
False,
cf,
nil,
PChar(ExtractFilePath(command)),
si,
pi )then
Beep;
except
Beep;
end;
Aus einem "normalen" Programm heraus funktioniert das ohne Probleme, aus einem Dienst heraus passiert das was ich oben beschrieben habe. Völlig egal ob ich den Dienst als "LocalSystem" oder einem Benutzer ausführe.
Weis keiner was ich machen kann?