Win32_ProcessStartup 클래스
Win32_ProcessStartup 추상 WMI 클래스는 Windows 기반 프로세스의 시작 구성을 나타냅니다. 클래스는 메서드 형식 정의로 정의됩니다. 즉, Win32_Process 클래스의Create 메서드에 정보를 전달하는 데만 사용됩니다.
MOF(Managed Object Format) 코드에서 간결하게 표기된 다음 구문은 상속된 속성을 모두 포함합니다.
구문
[Abstract, UUID("{8502C4DB-5FBB-11D2-AAC1-006008C78BC7}"), AMENDMENT]
class Win32_ProcessStartup : Win32_MethodParameterClass
{
uint32 CreateFlags;
string EnvironmentVariables[];
uint16 ErrorMode = 1;
uint32 FillAttribute;
uint32 PriorityClass;
uint16 ShowWindow;
string Title;
string WinstationDesktop;
uint32 X;
uint32 XCountChars;
uint32 XSize;
uint32 Y;
uint32 YCountChars;
uint32 YSize;
};
멤버
Win32_ProcessStartup 클래스에는 다음과 같은 유형의 멤버가 있습니다.
속성
Win32_ProcessStartup 클래스에는 이러한 속성이 있습니다.
-
CreateFlags
-
-
데이터 형식: uint32
-
액세스 형식: 읽기/쓰기
-
한정자: MappingStrings ("Win32API| 프로세스 및 스레드 함수| CreateProcess|dwCreationFlags")
우선 순위 클래스 및 프로세스 만들기를 제어하는 추가 값입니다. 다음 생성 값은 명시된 경우를 제외하고 모든 조합으로 지정할 수 있습니다.
-
-
Debug_Process (1)
-
이 플래그를 설정하면 호출 프로세스가 디버거로 처리되고 새 프로세스가 디버그됩니다. 시스템은 디버그 중인 프로세스에서 발생하는 모든 디버그 이벤트의 디버거에 알릴 수 있습니다.
-
Debug_Only_This_Process (2)
-
이 플래그가 설정되지 않고 호출 프로세스가 디버그되는 경우 새 프로세스는 디버깅 중인 다른 프로세스가 됩니다. 호출 프로세스가 디버그되는 프로세스가 아닌 경우 디버깅 관련 작업이 발생하지 않습니다.
-
Create_Suspended (4)
-
새 프로세스의 기본 스레드는 일시 중단된 상태로 만들어지고 ResumeThread 메서드가 호출될 때까지 실행되지 않습니다.
-
Detached_Process (8)
-
콘솔 프로세스의 경우 새 프로세스는 부모 프로세스의 콘솔에 액세스할 수 없습니다. Create_New_Console 플래그가 설정된 경우 이 플래그를 사용할 수 없습니다.
-
Create_New_Console (16)
-
이 새 프로세스에는 부모 콘솔을 상속하는 대신 새 콘솔이 있습니다. 이 플래그는 Detached_Process 플래그와 함께 사용할 수 없습니다.
-
Create_New_Process_Group (512)
-
이 새 프로세스는 새 프로세스 그룹의 루트 프로세스입니다. 프로세스 그룹에는 이 루트 프로세스의 하위 항목인 모든 프로세스가 포함됩니다. 새 프로세스 그룹의 프로세스 식별자는 Win32_Process 클래스의 ProcessID 속성에 반환되는 프로세스 식별자와 동일합니다. 프로세스 그룹은 GenerateConsoleCtrlEvent 메서드에서 Ctrl+C 신호 또는 Ctrl+BREAK 신호를 콘솔 프로세스 그룹에 보낼 수 있도록 하는 데 사용됩니다.
-
Create_Unicode_Environment (1024)
-
EnvironmentVariables 속성에 나열된 환경 설정은 유니코드 문자를 사용합니다. 이 플래그를 설정하지 않으면 환경 블록에서 ANSI 문자를 사용합니다.
-
Create_Default_Error_Mode (67108864)
-
새로 만든 프로세스에는 부모 프로세스의 오류 모드를 상속하는 대신 호출 프로세스의 시스템 기본 오류 모드가 제공됩니다. 이 플래그는 하드 오류를 사용하지 않도록 설정한 상태에서 실행되는 다중 스레드 셸 애플리케이션에 유용합니다.
-
CREATE_BREAKAWAY_FROM_JOB (16777216)
-
만든 프로세스에 작업 개체에 의해 제한되지 않는 데 사용됩니다.
EnvironmentVariables
-
데이터 형식: 문자열 배열
-
액세스 형식: 읽기/쓰기
-
한정자: MappingStrings ("Win32Registry|HKEY_CURRENT_USER\\Environment")
컴퓨터 구성에 대한 설정 목록입니다. 환경 변수는 파일에 대한 검색 경로, 임시 파일의 디렉터리, 애플리케이션별 옵션 및 기타 유사한 정보를 지정합니다. 시스템은 각 사용자에 대한 환경 설정 블록과 컴퓨터에 대한 환경 설정 블록을 유지 관리합니다. 시스템 환경 블록은 특정 컴퓨터의 모든 사용자에 대한 환경 변수를 나타냅니다. 사용자의 환경 블록은 시스템이 특정 사용자에 대해 유지 관리하는 환경 변수를 나타내며 시스템 환경 변수 집합을 포함합니다. 기본적으로 각 프로세스는 부모 프로세스에 대한 환경 블록의 복사본을 받습니다. 일반적으로 로그온한 사용자의 환경 블록입니다. 프로세스는 자식 프로세스에 대해 다른 환경 블록을 지정할 수 있습니다.
ErrorMode
-
데이터 형식: uint16
-
액세스 형식: 읽기/쓰기
-
한정자: MappingStrings ("Win32API| 오류 함수| SetErrorMode")
x86이 아닌 일부 프로세서에서는 잘못 정렬된 메모리 참조로 인해 맞춤 오류 예외가 발생합니다. No_Alignment_Fault_Except 플래그를 사용하면 운영 체제가 이러한 맞춤 오류를 자동으로 수정할지 또는 애플리케이션에 표시할지 여부를 제어할 수 있습니다. MIPS(초당 수백만 개의 명령) 플랫폼에서 애플리케이션은 No_Alignment_Fault_Except 플래그를 사용하여 SetErrorMode를 명시적으로 호출하여 운영 체제가 맞춤 오류를 자동으로 수정하도록 해야 합니다.
운영 체제에서 여러 유형의 심각한 오류를 처리하는 방법. 운영 체제 프로세스 오류를 지정하거나 애플리케이션에서 오류를 수신하고 처리할 수 있도록 지정할 수 있습니다.
기본 설정은 운영 체제가 애플리케이션에 맞춤 오류를 표시하도록 하는 것입니다. x86 플랫폼은 애플리케이션에 맞춤 오류를 표시하지 않으므로 No_Alignment_Fault_Except 플래그는 플래그가 설정되지 않은 경우에도 운영 체제에서 맞춤 오류 오류를 발생시키지 않습니다. SetErrorMode의 기본 상태는 모든 플래그를 0으로 설정하는 것입니다.
(1)
기본값
Fail_Critical_Errors (2)
이 플래그를 설정하면 이러한 오류가 발생할 때 운영 체제에서 중요한 오류 처리기 메시지 상자를 표시하지 않습니다. 대신 운영 체제는 호출 프로세스에 오류를 보냅니다.
No_Alignment_Fault_Except (4)
이 플래그를 설정하면 운영 체제에서 메모리 맞춤 오류를 자동으로 수정하고 애플리케이션에 표시되지 않게 만듭니다. 호출 및 하위 프로세스에 대해 이 작업을 수행합니다. 이 플래그는 축소된 RISC(명령 집합 컴퓨팅)에만 적용되며 x86 프로세서에는 영향을 주지 않습니다.
No_GP_Fault_Error_Box (8)
이 플래그를 설정하면 GP 오류가 발생할 때 운영 체제에 GP(일반 보호) 오류 메시지 상자가 표시되지 않습니다. 이 플래그는 GP 오류를 처리하는 애플리케이션을 디버깅해야 합니다.
No_Open_File_Error_Box (16)
이 플래그를 설정하면 운영 체제는 파일을 찾지 못할 때 메시지 상자를 표시하지 않습니다. 대신 오류는 호출 프로세스에 반환됩니다. 이 플래그는 현재 무시됩니다.
FillAttribute
-
데이터 형식: uint32
-
액세스 형식: 읽기/쓰기
-
한정자: MappingStrings ("Win32API| 프로세스 및 스레드 구조| STARTUPINFO|dwFillAttribute")
콘솔 애플리케이션에서 새 콘솔 창을 만든 경우 텍스트 및 배경색입니다. 이러한 값은 GUI(그래픽 사용자 인터페이스) 애플리케이션에서 무시됩니다. 전경색과 배경색을 모두 지정하려면 값을 함께 추가합니다. 예를 들어 파란색 배경(16)에 빨간색 형식(4)을 설정하려면 FillAttribute를 20으로 설정합니다.
1
Foreground_Blue
2
Foreground_Green
4
Foreground_Red
8
Foreground_Intensity
16
Background_Blue
32
Background_Green
64
Background_Red
128
Background_Intensity
PriorityClass
-
데이터 형식: uint32
-
액세스 형식: 읽기/쓰기
-
한정자: MappingStrings ("Win32API| 프로세스 및 스레드 구조| JOBOBJECT_BASIC_LIMIT_INFORMATION| PriorityClass")
새 프로세스의 우선 순위 클래스입니다. 이 속성을 사용하여 프로세스에서 스레드의 일정 우선 순위를 결정합니다. 속성이 null로 남아 있는 경우 만들기 프로세스의 우선 순위 클래스가 유휴 또는 Below_Normal 않는 한 우선 순위 클래스는 기본값인 Normal으로 설정됩니다. 이러한 경우 자식 프로세스는 호출 프로세스의 기본 우선 순위 클래스를 받습니다.
보통 (32)
특별한 일정이 필요하지 않은 정상적인 프로세스를 나타냅니다.
유휴 상태(64)
시스템이 유휴 상태이고 우선 순위가 높은 클래스에서 실행되는 모든 프로세스의 스레드에 의해 선점되는 경우에만 실행되는 스레드가 있는 프로세스를 나타냅니다. 대표적인 예는 화면 보호기가 있습니다. 자식 프로세스는 유휴 우선 순위 클래스를 상속합니다.
높음 (128)
올바르게 실행하려면 즉시 실행해야 하는 시간에 중요한 작업을 수행하는 프로세스를 나타냅니다. 우선 순위가 높은 클래스 프로세스의 스레드는 정상 우선 순위 또는 유휴 우선 순위 클래스 프로세스의 스레드를 선점합니다. 예를 들어 운영 체제의 부하에 관계없이 사용자가 호출할 때 신속하게 응답해야 하는 Windows 작업 목록이 있습니다. 우선 순위가 높은 클래스 CPU 바인딩 애플리케이션은 사용 가능한 거의 모든 주기를 사용할 수 있으므로 우선 순위가 높은 클래스를 사용할 때는 주의해야 합니다. 실시간 우선 순위만 이 수준으로 설정된 스레드를 선점합니다.
실시간 (256)
우선 순위가 가장 높은 프로세스를 나타냅니다. 실시간 우선 순위 클래스 프로세스의 스레드는 우선 순위가 높은 스레드 및 중요한 작업을 수행하는 운영 체제 프로세스를 포함하여 다른 모든 프로세스의 스레드를 선점합니다. 예를 들어 매우 짧은 간격으로 실행되는 실시간 프로세스로 인해 디스크 캐시가 플러시되지 않거나 마우스가 응답하지 않을 수 있습니다.
Below_Normal (16384)
우선 순위가 유휴보다 높지만 보통보다 낮은 프로세스를 나타냅니다.
Above_Normal (32768)
우선 순위가 보통보다 높지만 높음보다 낮은 프로세스를 나타냅니다.
Showwindow
-
데이터 형식: uint16
-
액세스 형식: 읽기/쓰기
-
한정자: MappingStrings ("Win32API| 프로세스 및 스레드 구조| STARTUPINFO|wShowWindow")
창이 사용자에게 표시되는 방식입니다. ShowWindow 함수에 대한 nCmdShow 매개 변수에 지정할 수 있는 값이라면 무엇이든 가능합니다.
제목
-
데이터 형식: 문자열
-
액세스 형식: 읽기/쓰기
-
한정자: MappingStrings ("Win32API| 프로세스 및 스레드 구조| STARTUPINFO|lpTitle")
새 콘솔 창을 만들 때 제목 표시줄에 표시되는 텍스트 콘솔 프로세스에 사용됩니다. NULL인 경우 실행 파일의 이름이 창 제목으로 사용됩니다. 이 속성은 새 콘솔 창을 만들지 않는 GUI 또는 콘솔 프로세스의 경우 NULL 이어야 합니다.
WinstationDesktop
-
데이터 형식: 문자열
-
액세스 형식: 읽기/쓰기
-
한정자: MappingStrings ("Win32API| 프로세스 및 스레드 구조| STARTUPINFO|lpDesktop")
바탕 화면의 이름 또는 프로세스에 대한 데스크톱 및 창 스테이션의 이름입니다. 문자열의 백슬래시는 문자열에 데스크톱 및 창 스테이션 이름이 모두 포함되어 있음을 나타냅니다. WinstationDesktop이 NULL인 경우 새 프로세스는 부모 프로세스의 데스크톱 및 창 스테이션을 상속합니다. WinstationDesktop이 빈 문자열인 경우 프로세스는 부모 프로세스의 데스크톱 및 창 스테이션을 상속하지 않습니다. 시스템은 새 데스크톱 및 창 스테이션을 만들어야 하는지 여부를 결정합니다. 창 스테이션은 클립보드, 전역 원자 집합 및 데스크톱 개체 그룹을 포함하는 보안 개체입니다. 대화형 사용자의 로그온 세션에 할당된 대화형 창 스테이션에는 키보드, 마우스 및 디스플레이 디바이스도 포함됩니다. 데스크톱은 창 스테이션 내에 포함된 보안 개체입니다. 데스크톱에는 논리적 디스플레이 화면이 있으며 창, 메뉴 및 후크가 포함되어 있습니다. 창 스테이션에는 여러 데스크톱이 있을 수 있습니다. 대화형 창 스테이션의 데스크톱만 표시하고 사용자 입력을 받을 수 있습니다.
X
-
데이터 형식: uint32
-
액세스 형식: 읽기/쓰기
-
한정자: MappingStrings ("Win32API| 프로세스 및 스레드 구조| STARTUPINFO|dwX")
새 창이 만들어지면 창의 왼쪽 위 모서리에 있는 X 오프셋(픽셀)입니다. 오프셋은 화면의 왼쪽 위 모서리에서 가져옵니다. GUI 프로세스의 경우 새 프로세스가 CreateWindow를 처음 호출하여 CreateWindow의 X 매개 변수가 CW_USEDEFAULT 경우 겹치는 창을 만들 때 지정된 위치가 사용됩니다.
[! 참고 X]
및 Y 는 독립적으로 지정할 수 없습니다.
XCountChars
-
데이터 형식: uint32
-
액세스 형식: 읽기/쓰기
-
한정자: MappingStrings ("Win32API| 프로세스 및 스레드 구조| STARTUPINFO| XCountChars")
문자 열의 화면 버퍼 너비입니다. 이 속성은 콘솔 창을 만드는 프로세스에 사용되며 GUI 프로세스에서는 무시됩니다.
참고
XCountChars 및 YCountChars는 독립적으로 지정할 수 없습니다.
XSize
-
데이터 형식: uint32
-
액세스 형식: 읽기/쓰기
-
한정자: MappingStrings ("Win32API| 프로세스 및 스레드 구조| STARTUPINFO|dwXSize")
새 창이 만들어지면 창의 픽셀 너비입니다. GUI 프로세스의 경우 새 프로세스가 CreateWindow를 처음 호출하여 CreateWindow의 nWidth 매개 변수가 CW_USEDEFAULT 경우 겹치는 창을 만들 때만 사용됩니다.
참고
XSize 및 YSize 는 독립적으로 지정할 수 없습니다.
예
-
데이터 형식: uint32
-
액세스 형식: 읽기/쓰기
-
한정자: MappingStrings ("Win32API| 프로세스 및 스레드 구조| STARTUPINFO|dwY")
새 창이 만들어지면 창의 왼쪽 위 모서리에 있는 픽셀 오프셋입니다. 오프셋은 화면의 왼쪽 위 모서리에서 가져옵니다. GUI 프로세스의 경우 새 프로세스가 CreateWindow를 처음 호출하여 CreateWindow의y 매개 변수가 CW_USEDEFAULT 경우 겹치는 창을 만들 때 지정된 위치가 사용됩니다.
[! 참고 X]
및 Y 는 독립적으로 지정할 수 없습니다.
YCountChars
-
데이터 형식: uint32
-
액세스 형식: 읽기/쓰기
-
한정자: MappingStrings ("Win32API| 프로세스 및 스레드 구조| STARTUPINFO| YCountChars")
문자 행의 화면 버퍼 높이입니다. 이 속성은 콘솔 창을 만드는 프로세스에 사용되지만 GUI 프로세스에서는 무시됩니다.
참고
XCountChars 및 YCountChars는 독립적으로 지정할 수 없습니다.
YSize
-
데이터 형식: uint32
-
액세스 형식: 읽기/쓰기
-
한정자: MappingStrings ("Win32API| 프로세스 및 스레드 구조| STARTUPINFO|dwYSize")
새 창이 만들어지면 창의 픽셀 높이입니다. GUI 프로세스의 경우 새 프로세스가 CreateWindow를 처음 호출하여 CreateWindow의 nWidth 매개 변수가 CW_USEDEFAULT 경우 겹치는 창을 만들 때만 사용됩니다.
참고
XSize 및 YSize 는 독립적으로 지정할 수 없습니다.
설명
이 클래스는 Win32_MethodParameterClass 파생됩니다.
개요
Win32_ProcessCreate 메서드를 사용하면 컴퓨터에서 실행되는 새 프로세스에 대한 시작 옵션을 구성할 수 있습니다. 예를 들어 "숨겨진" 창에서 시작되도록 프로세스를 구성할 수 있습니다. 이렇게 하면 사용자가 프로세스를 보고 방해할 수 없습니다. 프로세스가 명령 창에서 실행되는 경우 창의 크기, 제목, 전경 및 배경색을 구성할 수 있습니다.
시작 옵션은 Win32_ProcessStartup 클래스를 사용하여 구성됩니다. Win32_ProcessStartup 메서드 형식 클래스입니다. 메서드 형식 클래스는 메서드에 정보를 전달하기 위해서만 존재합니다. 이 경우 Win32_ProcessStartup instance 모든 속성이 Win32_Process instance 전달됩니다.
Win32_ProcessStartup 사용
- Win32_ProcessStartup instance 만듭니다.
- 새 instance 속성을 구성합니다.
- Win32_Process Create 메서드의 일부로 instance 포함합니다.
예를 들어 objConfig라는 Win32_ProcessStartup instance 만든 경우 다음과 같이 Create 메서드에 개체 이름을 전달합니다.
errReturn = objProcess.Create("Database.exe", null, objConfig, intProcessID)
예제
Win32_ProcessStartup 클래스를 사용하여 프로세스에 대한 다양한 시작 옵션을 구성할 수 있습니다. 이러한 옵션에는 숨겨진 창에서 프로세스를 만들고 우선 순위가 높은 프로세스를 만드는 등의 작업이 포함되지만 이에 국한되지 않습니다. 다음 VBScript는 숨겨진 창에 프로세스를 만듭니다.
Const HIDDEN_WINDOW = 12
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
errReturn = objProcess.Create("Notepad.exe", null, objConfig, intProcessID)
다음 VBScript는 우선 순위가 높은 프로세스를 만듭니다.
Const ABOVE_NORMAL = 32768
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.PriorityClass = ABOVE_NORMAL
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
objProcess.Create "Database.exe", Null, objConfig, intProcessID
다음 VBScript 코드 예제에서는 로컬 컴퓨터에 메모장 프로세스를 만듭니다. Win32_ProcessStartup 프로세스 설정을 구성하는 데 사용됩니다.
Const SW_NORMAL = 1
strComputer = "."
strCommand = "Notepad.exe"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
' Configure the Notepad process to show a window
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = SW_NORMAL
' Create Notepad process
Set objProcess = objWMIService.Get("Win32_Process")
intReturn = objProcess.Create _
(strCommand, Null, objConfig, intProcessID)
If intReturn <> 0 Then
Wscript.Echo "Process could not be created." & vbNewLine & _
"Command line: " & strCommand & vbNewLine & _
"Return value: " & intReturn
Else
Wscript.Echo "Process created." & vbNewLine & _
"Command line: " & strCommand & vbNewLine & _
"Process ID: " & intProcessID
End If
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 |
Windows Vista |
지원되는 최소 서버 |
Windows Server 2008 |
네임스페이스 |
Root\CIMV2 |
MOF |
|
DLL |
|
추가 정보