SHCREATEPROCESSINFOW-Struktur (shellapi.h)
[SHCreateProcessAsUserW ist nicht mehr in Windows XP oder höheren Versionen implementiert.]
Enthält die Informationen, die shCreateProcessAsUserW zum Erstellen eines Prozesses benötigt.
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;
Member
cbSize
Art: DWORD
Die Größe (in Bytes) dieser Struktur.
fMask
Typ: ULONG
Ein Array von Flags, das den Inhalt und die Gültigkeit der anderen Strukturmember 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-Element 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 ist, bevor Sie zurückkehren.
SEE_MASK_FLAG_NO_UI
Zeigen Sie kein Fehlermeldungsfeld an, wenn ein Fehler auftritt.
SEE_MASK_HMONITOR
Verwenden Sie dieses Flag, wenn Sie einen Monitor auf Multimonitorsystemen angeben.
SEE_MASK_NOCLOSEPROCESS
Die Anwendung schließt den Prozess. Wenn der 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-Member der PROCESS_INFORMATION-Struktur enthalten den Prozess- bzw. Threadhandles. Dieses Flag wird in der Regel festgelegt, damit 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 wird, wird kein Handle zurückgegeben. Die aufrufende Anwendung ist dafür verantwortlich, das Handle zu schließen, wenn es 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. Dies entspricht der Verwendung eines CREATE_NEW_CONSOLE-Flags mit CreateProcess.
SEE_MASK_UNICODE
Gibt eine Unicode-Anwendung an.
hwnd
Typ: HWND
Ein übergeordnetes Fensterhandle.
pszFile
Typ: LPCWSTR
Ein Zeiger auf eine Unicode-Zeichenfolge mit NULL-Beendigung, die die ausführbare Datei angibt, für die SHCreateProcessAsUserW die aktion ausführt, die durch das runas-Verb angegeben wird. Das Runas-Verb muss von der -Klasse der Datei unterstützt werden.
pszParameters
Typ: LPCWSTR
Ein Zeiger auf eine Unicode-Zeichenfolge mit Null-Beendigung, die die Anwendungsparameter enthält. Die Parameter müssen durch Leerzeichen getrennt werden.
pszCurrentDirectory
Typ: LPCWSTR
Eine Unicode-Zeichenfolge mit Null-Endung, die das aktuelle Verzeichnis enthält.
hUserToken
Typ: HANDLE
Ein Zugriffstoken , das verwendet werden kann, um einen bestimmten Benutzer darzustellen. Dies ist erforderlich, wenn mehrere Benutzer für die Ordner vorhanden sind, die als zu einem einzelnen Benutzer gehören behandelt werden. Die aufrufende Anwendung muss über die entsprechenden Sicherheitsberechtigungen für den jeweiligen Benutzer verfügen, einschließlich TOKEN_QUERY und TOKEN_IMPERSONATE, und die Registrierungsstruktur des Benutzers muss derzeit eingebunden sein. Weitere Informationen zu Zugriffssteuerungsproblemen finden Sie unter Access Control.
lpProcessAttributes
Typ: LPSECURITY_ATTRIBUTES
Ein Zeiger auf eine SECURITY_ATTRIBUTES-Struktur mit der Sicherheitsbeschreibung 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 eine Standardsicherheitsbeschreibung, und das Handle kann nicht geerbt werden.
Sicherheitswarnung: Die falsche Verwendung eines Sicherheitsdeskriptors kann die Sicherheit Ihrer Anwendung gefährden. Weitere Informationen finden Sie unter SECURITY_ATTRIBUTES.
lpThreadAttributes
Typ: LPSECURITY_ATTRIBUTES
Ein Zeiger auf eine SECURITY_ATTRIBUTES-Struktur mit der Sicherheitsbeschreibung 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 eine Standardsicherheitsbeschreibung, und das Handle kann nicht geerbt werden.
Sicherheitswarnung: Die falsche Verwendung eines Sicherheitsdeskriptors kann die Sicherheit Ihrer Anwendung gefährden. Weitere Informationen finden Sie unter SECURITY_ATTRIBUTES.
bInheritHandles
Typ: BOOL
Ein Indikator dafür, ob der neue Prozess Handles vom aufrufenden Prozess erbt. Wenn true festgelegt ist, wird jedes vererbbare offene Handle im aufrufenden Prozess vom neuen Prozess geerbt. Geerbte Handles verfügen über den gleichen Wert und die gleichen Zugriffsberechtigungen wie die ursprünglichen Handles.
dwCreationFlags
Art: DWORD
Flags, die die Erstellung des Prozesses und der 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 Standard Fenster 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ückgibt. Die hProcess- und hThread-Member der PROCESS_INFORMATION Struktur enthalten dann die Prozess- bzw. Threadhandles. Legen Sie diesen Member auf NULL fest, und der Prozess wird geschlossen, bevor die Funktion zurückgegeben wird.
Hinweise
Um doppelte Anführungszeichen in pszParameters einzuschließen, müssen Sie jede Marke 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:, und "quoted text".
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional, Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Kopfzeile | shellapi.h |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für