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.
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 |