Einzelnen Beitrag anzeigen

False Pretense

Registriert seit: 22. Aug 2008
19 Beiträge
 
#1

Prozess mit eingeschränkten/Administratorrechten starten

  Alt 19. Okt 2008, 00:59
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
  Mit Zitat antworten Zitat