Announcement

Collapse
No announcement yet.

CreateProcessAsUSer aus Dienst heraus

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CreateProcessAsUSer aus Dienst heraus

    Hallo,

    ich möchte aus einem Dienst heraus mit CreateProcessAsUser ein Programm starten, folgenden Code habe ich jetzt:

    if not LogonUser(
    PChar('Username'),
    PChar('Workgroup'),
    PChar('Passwort'),
    LOGON32_LOGON_INTERACTIVE,
    LOGON32_PROVIDER_DEFAULT,
    token) then
    Beep;
    ZeroMemory( @si, sizeof(si) );
    si.lpDesktop:=PChar(deskname);
    si.cb := sizeof(si);
    ZeroMemory( @pi, sizeof(pi) );
    cf:=CREATE_NEW;
    command:='E:\Programm.exe';

    try
    if not CreateProcessAsUser(
    token,
    nil,
    PChar(command),
    nil,
    nil,
    true,
    cf,
    nil,
    PChar(ExtractFilePath(command)),
    si,
    pi )then
    Beep;
    except
    Beep;
    end;

    Aus einem "normalen" Programm heraus funktioniert das ohne Probleme, das programm wird auf einem zweiten Desktop ausgeführt UND angezeigt.

    Aus dem Dienst heraus wird zwar der zweite desktop angezeigt, das programm wird auch gestartet, allerdings nicht angezeigt.

    Kann mir jemand sagen wie ich das Programm auch aus dam Dienst heraus anzeigen lasse?

    Vielen Dank schonmal

    Martin Weber

  • #2
    Hallo Martin,

    Der Dienst muss die Eigenschaft "Interactive" auf "true" haben, sonst kann er nicht mit dem Desktop kommunizieren. "ServiceType" muss dann auch auf "stWin32" sein.
    Dienste, die Verbindung zum Desktop haben werden jedoch im Allgemeinen nicht verwendet, da hierdurch Sicherheitslücken entstehen.

    Gruß
    Bori

    Comment


    • #3
      Der Dienst hat diese Eigenschaften, aber es wird trotzdem nicht angezeigt.

      Wenn ich ein Programm mit ShellExecute ausführe funktioniert dies, allerdings nur NACH dem einloggen und auch nicht auf dem zweiten Dektop

      Comment

      Working...
      X