Hallo!
Ich habe ein Kontrollprogramm für ein Internet-Café geschrieben.
Wie in jedem Internet-Café arbeitet man nicht mit Administratorrechten, sondern mit eingeschränkten Rechten.
Das habe ich ausgenutzt und lasse mein Programm mit CreateProcessAsLogon unter Adminrechten laufen, damit man es nicht mit dem Windowstaskmanager oder anderen Taskmanagern beenden kann.
Hier mein Problem:
In dem Programm habe ich eine Funktion eingebaut, mit der sich andere Programmdateien starten lassen.
Jedoch erben diese die Administratorrechte meines Kontrollprogrammes, wenn ich sie mit ShellExecute aufrufe.
Die Funktion CreateProcessAsLogon kann ich nicht verwenden, um Programme mit eingeschränkten Rechten zu starten, da dieses Konto nicht kennwortgeschützt ist.
Ohne Kennwort lässt sich diese Funktion nicht verwenden.
Weiß da einer eine Lösung?
Die Funktion CreateProcessAsLogon sieht folgendermaßen aus:
(Benötigt wird noch die
Unit MpuWinNT von Luckie.)
Delphi-Quellcode:
function CreateProcessAsLogon(const User, PW, Application, CmdLine: WideString):
Boolean;
var
si: TStartupInfoW;
pif: TProcessInformation;
begin
ZeroMemory(@si, sizeof(TStartupInfo));
si.cb := SizeOf(TStartupInfoW);
si.dwFlags := STARTF_USESHOWWINDOW;
si.wShowWindow := 1;
Result := CreateProcessWithLogonW(PWideChar(User), nil, PWideChar(PW),
LOGON_WITH_PROFILE, nil, PWideChar(Application + ' ' + CmdLine),
CREATE_DEFAULT_ERROR_MODE, nil, nil, si, pif);
end;
Mit freundlichen Grüßen,
False Pretense