Freigeben über


SHCREATEPROCESSINFOW-Struktur (shellapi.h)

[SHCreateProcessAsUserW ist in Windows XP oder höheren Versionen nicht mehr implementiert.]

Enthält die informationen, die von SHCreateProcessAsUserW zum Erstellen eines Prozesses benötigt werden.

Syntax

typedef struct _SHCREATEPROCESSINFOW {
  DWORD                 cbSize;
  ULONG                 fMask;
  HWND                  hwnd;
  LPCWSTR               pszFile;
  LPCWSTR               pszParameters;
  LPCWSTR               pszCurrentDirectory;
  HANDLE                hUserToken;
  LPSECURITY_ATTRIBUTES lpProcessAttributes;
  LPSECURITY_ATTRIBUTES lpThreadAttributes;
  BOOL                  bInheritHandles;
  DWORD                 dwCreationFlags;
  LPSTARTUPINFOW        lpStartupInfo;
  LPPROCESS_INFORMATION lpProcessInformation;
} SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW;

Angehörige

cbSize

Typ: DWORD-

Die Größe dieser Struktur in Byte.

fMask

Typ: ULONG-

Ein Array von Flags, das den Inhalt und die Gültigkeit der anderen Strukturmber angibt. Dies kann eine Kombination der folgenden Werte sein.

SEE_MASK_CLASSKEY

Verwenden Sie den Klassenregistrierungsschlüssel der Datei.

SEE_MASK_CLASSNAME

Verwenden Sie den Klassennamen der Datei.

SEE_MASK_CONNECTNETDRV

Überprüfen Sie die Freigabe, und stellen Sie eine Verbindung mit einem Laufwerkbuchstaben her. Das pszFile Member ist ein UNC-Pfad einer Datei in einem Netzwerk.

SEE_MASK_DOENVSUBST

Erweitern Sie alle Umgebungsvariablen.

SEE_MASK_FLAG_DDEWAIT

Warten Sie, bis die DDE-Unterhaltung beendet wird, bevor Sie zurückkehren.

SEE_MASK_FLAG_NO_UI

Zeigt kein Meldungsfeld an, wenn ein Fehler auftritt.

SEE_MASK_HMONITOR

Verwenden Sie dieses Kennzeichen, wenn Sie einen Monitor auf Multimonitorsystemen angeben.

SEE_MASK_NOCLOSEPROCESS

Die Anwendung schließt den Prozess. Wenn das lpProcessInformation Member ein gültiger PROCESS_INFORMATION Zeiger ist und SEE_MASK_NOCLOSEPROCESS festgelegt ist, bleibt der Prozess geöffnet, wenn SHCreateProcessAsUserW zurückgibt. Die hProcess- und hThread- Elemente der PROCESS_INFORMATION Struktur enthalten den Prozess- bzw. Threadhandles. Dieses Flag ist in der Regel so festgelegt, dass eine Anwendung herausfinden kann, wann ein mit SHCreateProcessAsUserW erstellter Prozess beendet wird. In einigen Fällen, z. B. wenn die Ausführung über eine DDE-Unterhaltung erfüllt ist, wird kein Handle zurückgegeben. Die aufrufende Anwendung ist dafür verantwortlich, das Handle zu schließen, wenn sie nicht mehr benötigt wird. Wenn dieses Flag nicht festgelegt ist, wird der Prozess geschlossen, bevor SHCreateProcessAsUserW zurückgibt, auch wenn lpProcessInformation ein gültiger Zeiger ist.

SEE_MASK_NO_CONSOLE

Erstellen Sie eine Konsole für den neuen Prozess, anstatt die Konsole des übergeordneten Elements zu erben. Es entspricht der Verwendung eines CREATE_NEW_CONSOLE-Flags mit CreateProcess-.

SEE_MASK_UNICODE

Gibt eine Unicode-Anwendung an.

hwnd

Typ: HWND-

Ein übergeordnetes Fensterziehpunkt.

pszFile

Typ: LPCWSTR-

Ein Zeiger auf eine mit Null beendete Unicode-Zeichenfolge, die die ausführbare Datei angibt, für die SHCreateProcessAsUserW- die durch das runas Verb angegebene Aktion ausführt. Das runas Verb muss von der Dateiklasse unterstützt werden.

Hinweis Wenn der Pfad nicht im Dateinamen enthalten ist, wird das aktuelle Verzeichnis angenommen.
 

pszParameters

Typ: LPCWSTR-

Ein Zeiger auf eine mit Null beendete Unicode-Zeichenfolge, die die Anwendungsparameter enthält. Die Parameter müssen durch Leerzeichen getrennt werden.

pszCurrentDirectory

Typ: LPCWSTR-

Eine mit Null beendete Unicode-Zeichenfolge, die das aktuelle Verzeichnis enthält.

hUserToken

Typ: HANDLE

Ein Zugriffstoken, das verwendet werden kann, um einen bestimmten Benutzer darzustellen. Es ist erforderlich, wenn mehrere Benutzer für diese Ordner vorhanden sind, die als Zugehörigkeit zu einem einzelnen Benutzer behandelt werden. Die aufrufende Anwendung muss über geeignete Sicherheitsberechtigungen für den jeweiligen Benutzer verfügen, einschließlich TOKEN_QUERY und TOKEN_IMPERSONATE, und die Registrierungsstruktur des Benutzers muss derzeit bereitgestellt werden. Weitere Erläuterungen zu Problemen mit der Zugriffssteuerung finden Sie unter Zugriffssteuerung.

lpProcessAttributes

Typ: LPSECURITY_ATTRIBUTES

Ein Zeiger auf eine SECURITY_ATTRIBUTES Struktur mit dem Sicherheitsdeskriptor für den neuen Prozess. Außerdem wird angegeben, ob ein untergeordneter Prozess geerbt werden kann. Wenn dieser Parameter auf NULL-festgelegt ist, verfügt der Prozess über einen Standardsicherheitsdeskriptor, und der Handle kann nicht geerbt werden.

Sicherheitswarnung: Die Verwendung eines Sicherheitsdeskriptors kann die Sicherheit Ihrer Anwendung beeinträchtigen. Weitere Informationen finden Sie unter SECURITY_ATTRIBUTES.

lpThreadAttributes

Typ: LPSECURITY_ATTRIBUTES

Ein Zeiger auf eine SECURITY_ATTRIBUTES-Struktur mit dem Sicherheitsdeskriptor für den neuen Thread. Außerdem wird angegeben, ob ein untergeordneter Prozess geerbt werden kann. Wenn dieser Parameter auf NULL-festgelegt ist, verfügt der Prozess über einen Standardsicherheitsdeskriptor, und der Handle kann nicht geerbt werden.

Sicherheitswarnung: Die Verwendung eines Sicherheitsdeskriptors kann die Sicherheit Ihrer Anwendung beeinträchtigen. Weitere Informationen finden Sie unter SECURITY_ATTRIBUTES.

bInheritHandles

Typ: BOOL-

Ein Indikator, ob der neue Prozess Handles vom aufrufenden Prozess erbt. Wenn dieser Wert auf TRUEfestgelegt ist, wird jedes vererbbare offene Handle im aufrufenden Prozess vom neuen Prozess geerbt. Geerbte Handles weisen denselben Wert und zugriffsberechtigungen wie die ursprünglichen Handles auf.

dwCreationFlags

Typ: DWORD-

Flags, die die Erstellung des Prozesses und die Prioritätsklasse steuern. Eine Liste der verfügbaren Flags finden Sie unter CreateProcessAsUser.

lpStartupInfo

Typ: LPSTARTUPINFOW

Ein Zeiger auf eine STARTUPINFO Struktur, die angibt, wie das Hauptfenster für den neuen Prozess angezeigt werden soll.

lpProcessInformation

Typ: LPPROCESS_INFORMATION

Ein Zeiger auf eine PROCESS_INFORMATION Struktur, die Informationen zum neuen Prozess empfängt. Legen Sie dieses Element auf einen gültigen Strukturzeiger fest, und legen Sie das SEE_MASK_NOCLOSEPROCESS Flag im fMask--Element fest, und der Prozess bleibt geöffnet, wenn die Funktion zurückgegeben wird. Die PROCESS_INFORMATIONhProcess- und hThread--Member enthalten dann den Prozess und die Threadhandles. Legen Sie dieses Element auf NULL-fest, und der Prozess wird geschlossen, bevor die Funktion zurückgegeben wird.

Bemerkungen

Um doppelte Anführungszeichen in pszParameterseinzuschließen, müssen Sie jede Markierung in ein Anführungszeichenpaar einschließen, wie im folgenden Beispiel gezeigt:

sei.lpParameters = "An example: \"\"\"quoted text\"\"\"";

In diesem Fall empfängt die Anwendung drei Parameter: An, example:, and "quoted text".

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000 Professional, Windows XP [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2003 [Nur Desktop-Apps]
Header- shellapi.h

Siehe auch

SHELLEXECUTEINFO-