AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CreateProcessAsUser

Ein Thema von jfheins · begonnen am 6. Feb 2005 · letzter Beitrag vom 10. Feb 2005
Antwort Antwort
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#1

CreateProcessAsUser

  Alt 6. Feb 2005, 22:17
Kann mir mal bitte jemand ein Beispiel geben, wie ich mit CreateProcessAsUser ein Programm unter einem bestimmten Benutzer ausführen lassen kann ?

Ist irgendwie zu kompüliziert ...

Soweit ich es verstanden hab', muss es CreateProcessAsUser sein, weil ich einen System-Dienst habe, und meine Anwendung aber unter meinem Benutzer laufen soll ...

Oh, sry ... fünffachthread ...

Doofer IE ...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: CreateProcessAsUser

  Alt 6. Feb 2005, 22:32
Das Forum hat auch eine Suche.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: CreateProcessAsUser

  Alt 7. Feb 2005, 16:05
Zitat von Luckie:
Das Forum hat auch eine Suche.
Ach wirklich ?

Nur ist bei allem, was ich gefunden habe, alles daraufhinausgelaufen, dass statt CreateProcessAsUser CreateProcessWithLogonW verwendet wird ... (Was mir afaik nicht weiterhilft)
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#4

Re: CreateProcessAsUser

  Alt 10. Feb 2005, 10:29
PSDK sagt:
The CreateProcessWithLogonW function is similar to CreateProcessAsUser, except that the caller does not need to call the LogonUser function to authenticate the user and get a token.


Du mußt eben LogonUser() bei der gewünschten Funktion explizit aufrufen - danach das erhaltene Token an die Funktion übergeben. Außerdem existiert CreateProcessWithLogonW() erst ab Windows 2000.

Außerdem werden bestimmte Privilegien benötigt, die du um es maximalst kompatibel zu gestalten, vorher aktivieren solltest. Funktionen dazu für Dlephi gibt's wie Sand am Meer:
PSDK meint:
Typically, the process that calls the CreateProcessAsUser function must have the SE_ASSIGNPRIMARYTOKEN_NAME and SE_INCREASE_QUOTA_NAME privileges. However, if hToken is a restricted version of the caller's primary token, the SE_ASSIGNPRIMARYTOKEN_NAME privilege is not required. If the necessary privileges are not already enabled, CreateProcessAsUser enables them for the duration of the call. For more information, see Running with Special Privileges.


Bei weiteren Fragen einfach fragen ... notfalls PN an mich, weil ich nur unregelmäßig reinschaue.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: CreateProcessAsUser

  Alt 10. Feb 2005, 11:16
Zitat von jfheins:
Zitat von Luckie:
Das Forum hat auch eine Suche.
Ach wirklich ?

Nur ist bei allem, was ich gefunden habe, alles daraufhinausgelaufen, dass statt CreateProcessAsUser CreateProcessWithLogonW verwendet wird ... (Was mir afaik nicht weiterhilft)
Ja. Wirklich: Und wenn ich nach createprocessasuser suche finde ich sogar kompletten Quellcode. Und wenn du den Thread bis zum Ende verfolgst, wirst du feststellen, dass letztendlich nur ein Dienst, der unter dem Systemkonto läuft, sich die nötigen Rechte, die auch Assarbad angesprochen hat, wird verschaffen können.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#6

Re: CreateProcessAsUser

  Alt 10. Feb 2005, 12:15
Zitat von Luckie:
[...] wirst du feststellen, dass letztendlich nur ein Dienst, der unter dem Systemkonto läuft, sich die nötigen Rechte, die auch Assarbad angesprochen hat, wird verschaffen können.
Oder ein Gast auf einem ungepatchten System oder ein beliebiger Benutzer mit Debug-Privs *g*
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: CreateProcessAsUser

  Alt 10. Feb 2005, 19:23
Luckie, wo ist die Funktion EnablePrivilege deklariert?

Ich finde die irgendwie nicht ...

P.S. Ich versuche verzweifelt, aus einem System-Prozess heraus eine normale Anwendung in meinem Benutzerkontext zu starten ...
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#8

Re: CreateProcessAsUser

  Alt 10. Feb 2005, 19:39
Zitat von jfheins:
Luckie, wo ist die Funktion EnablePrivilege deklariert?
Suche bei Google oder im Forum. Es gibt genug derer.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: CreateProcessAsUser

  Alt 10. Feb 2005, 21:48
Delphi-Quellcode:
function EnablePrivilege(const Privilege: string; fEnable: Boolean; out
  PreviousState: Boolean): DWORD;
var
  Token : THandle;
  NewState : TTokenPrivileges;
  Luid : TLargeInteger;
  PrevState : TTokenPrivileges;
  Return : DWORD;
begin
  PreviousState := True;
  if (GetVersion() > $80000000) then
    // Win9x
    Result := ERROR_SUCCESS
  else
  begin
    // WinNT
    if not OpenProcessToken(GetCurrentProcess(), MAXIMUM_ALLOWED, Token) then
      Result := GetLastError()
    else
    try
      if not LookupPrivilegeValue(nil, PChar(Privilege), Luid) then
        Result := GetLastError()
      else
      begin
        NewState.PrivilegeCount := 1;
        NewState.Privileges[0].Luid := Luid;
        if fEnable then
          NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
        else
          NewState.Privileges[0].Attributes := 0;
        if not AdjustTokenPrivileges(Token, False, NewState,
          SizeOf(TTokenPrivileges), PrevState, Return) then
          Result := GetLastError()
        else
        begin
          Result := ERROR_SUCCESS;
          PreviousState :=
            (PrevState.Privileges[0].Attributes and SE_PRIVILEGE_ENABLED <> 0);
        end;
      end;
    finally
      CloseHandle(Token);
    end;
  end;
end;
Stammt, glaube ich, ursprünglich von Nico oder so.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz