SHCREATEPROCESSINFOW 구조체(shellapi.h)
[SHCreateProcessAsUserW 는 Windows XP 이상 버전에서 더 이상 구현되지 않습니다.]
프로세스를 만드는 데 SHCreateProcessAsUserW 에 필요한 정보를 포함합니다.
구문
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;
멤버
cbSize
형식:DWORD
이 구조체의 크기(바이트)입니다.
fMask
형식: ULONG
다른 구조체 멤버의 내용과 유효성을 나타내는 플래그의 배열입니다. 다음 값의 조합일 수 있습니다.
SEE_MASK_CLASSKEY
파일의 클래스 레지스트리 키를 사용합니다.
SEE_MASK_CLASSNAME
파일의 클래스 이름을 사용합니다.
SEE_MASK_CONNECTNETDRV
공유의 유효성을 검사하고 드라이브 문자에 연결합니다. pszFile 멤버는 네트워크에 있는 파일의 UNC 경로입니다.
SEE_MASK_DOENVSUBST
환경 변수를 확장합니다.
SEE_MASK_FLAG_DDEWAIT
반환하기 전에 DDE 대화가 종료되기를 기다립니다.
SEE_MASK_FLAG_NO_UI
오류가 발생하면 오류 메시지 상자를 표시하지 마세요.
SEE_MASK_HMONITOR
다중 모니터 시스템에서 모니터를 지정할 때 이 플래그를 사용합니다.
SEE_MASK_NOCLOSEPROCESS
애플리케이션이 프로세스를 닫습니다. lpProcessInformation 멤버가 유효한 PROCESS_INFORMATION 포인터이고 SEE_MASK_NOCLOSEPROCESS 설정된 경우 SHCreateProcessAsUserW가 반환될 때 프로세스가 열린 상태로 유지됩니다. PROCESS_INFORMATION 구조체의 hProcess 및 hThread 멤버는 각각 프로세스와 스레드 핸들을 보유합니다. 이 플래그는 일반적으로 SHCreateProcessAsUserW 로 만든 프로세스가 종료되는 시기를 애플리케이션에서 확인할 수 있도록 설정됩니다. DDE 대화를 통해 실행이 충족되는 경우와 같은 경우에 핸들이 반환되지 않습니다. 호출 애플리케이션은 더 이상 필요하지 않은 경우 핸들을 닫습니다. 이 플래그를 설정하지 않으면 lpProcessInformation이 유효한 포인터인 경우에도 SHCreateProcessAsUserW가 반환되기 전에 프로세스가 닫힙니다.
SEE_MASK_NO_CONSOLE
부모의 콘솔을 상속하는 대신 새 프로세스에 대한 콘솔을 만듭니다. CreateProcess에서 CREATE_NEW_CONSOLE 플래그를 사용하는 것과 같습니다.
SEE_MASK_UNICODE
유니코드 애플리케이션을 나타냅니다.
hwnd
형식: HWND
부모 창 핸들입니다.
pszFile
형식: LPCWSTR
SHCreateProcessAsUserW가 runas 동사로 지정된 작업을 수행할 실행 파일을 지정하는 null로 종료된 유니코드 문자열에 대한 포인터입니다. runas 동사는 파일의 클래스에서 지원되어야 합니다.
pszParameters
형식: LPCWSTR
애플리케이션 매개 변수를 포함하는 null로 끝나는 유니코드 문자열에 대한 포인터입니다. 매개 변수는 공백으로 구분해야 합니다.
pszCurrentDirectory
형식: LPCWSTR
현재 디렉터리를 포함하는 null로 종료된 유니코드 문자열입니다.
hUserToken
형식: HANDLE
특정 사용자를 나타내는 데 사용할 수 있는 액세스 토큰 입니다. 단일 사용자에 속하는 것으로 처리되는 폴더에 대해 여러 사용자가 있는 경우에 필요합니다. 호출 애플리케이션에는 TOKEN_QUERY 및 TOKEN_IMPERSONATE 포함하여 특정 사용자에 대한 적절한 보안 권한이 있어야 하며 사용자의 레지스트리 하이브가 현재 탑재되어 있어야 합니다. 액세스 제어 문제에 대한 자세한 내용은 Access Control 참조하세요.
lpProcessAttributes
형식: LPSECURITY_ATTRIBUTES
새 프로세스에 대한 보안 설명자가 있는 SECURITY_ATTRIBUTES 구조체에 대한 포인터입니다. 또한 자식 프로세스를 상속할 수 있는지 여부를 지정합니다. 이 매개 변수를 NULL로 설정하면 프로세스에 기본 보안 설명자가 있으며 핸들을 상속할 수 없습니다.
보안 경고: 보안 설명자를 잘못 사용하면 애플리케이션의 보안이 손상됩니다. 자세한 내용은 SECURITY_ATTRIBUTES 참조하세요.
lpThreadAttributes
형식: LPSECURITY_ATTRIBUTES
새 스레드에 대한 보안 설명자가 있는 SECURITY_ATTRIBUTES 구조체에 대한 포인터입니다. 또한 자식 프로세스를 상속할 수 있는지 여부를 지정합니다. 이 매개 변수를 NULL로 설정하면 프로세스에 기본 보안 설명자가 있으며 핸들을 상속할 수 없습니다.
보안 경고: 보안 설명자를 잘못 사용하면 애플리케이션의 보안이 손상됩니다. 자세한 내용은 SECURITY_ATTRIBUTES 참조하세요.
bInheritHandles
형식: BOOL
새 프로세스가 호출 프로세스에서 핸들을 상속하는지 여부를 나타내는 표시기입니다. TRUE로 설정하면 호출 프로세스에서 상속 가능한 각 열린 핸들이 새 프로세스에서 상속됩니다. 상속된 핸들은 원래 핸들과 동일한 값 및 액세스 권한을 갖습니다.
dwCreationFlags
형식:DWORD
프로세스 및 우선 순위 클래스의 생성을 제어하는 플래그입니다. 사용 가능한 플래그 목록은 CreateProcessAsUser를 참조하세요.
lpStartupInfo
형식: LPSTARTUPINFOW
새 프로세스의 기본 창이 표시되는 방법을 지정하는 STARTUPINFO 구조체에 대한 포인터입니다.
lpProcessInformation
형식: LPPROCESS_INFORMATION
새 프로세스에 대한 정보를 수신하는 PROCESS_INFORMATION 구조체에 대한 포인터입니다. 이 멤버를 유효한 구조 포인터로 설정하고 fMask 멤버에서 SEE_MASK_NOCLOSEPROCESS 플래그를 설정하면 함수가 반환될 때 프로세스가 열린 상태로 유지됩니다. PROCESS_INFORMATION 구조체의 hProcess 및 hThread 멤버는 각각 프로세스 및 스레드 핸들을 보유합니다. 이 멤버를 NULL로 설정하면 함수가 반환되기 전에 프로세스가 닫힙니다.
설명
pszParameters에 큰따옴표를 포함하려면 다음 예제와 같이 각 표시를 따옴표 쌍으로 묶어야 합니다.
sei.lpParameters = "An example: \"\"\"quoted text\"\"\"";
이 경우 애플리케이션은 세 가지 매개 변수 인 An, example:및 "quoted text"를 받습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional, Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
머리글 | shellapi.h |