코드에서 특정 외부프로세스를 종료시키려고 할떄에(이미 프로세스.아이디를 알고 있는경우에), 예를 들어서ㅡ, 자신의 프로그램에서 발생시킨 프로세스의 경우에, Process.GetProcessById().Kill() 을 이용하려면(?)
app.manifest 파일은 애플리케이션에 대한 메타데이터를 포함하는 파일로, 프로그램이 실행될 때 필요한 권한이나 설정을 지정할 수 있습니다. 예를 들어, 프로그램을 관리자 권한으로 실행하려면 app.manifest 파일에 requestedExecutionLevel을 설정할 수 있습니다.
1. Visual Studio에서 app.manifest 파일 생성 및 설정 방법
Step 1: app.manifest 파일 생성
- 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭한 후, "추가" > **"새 항목"**을 선택합니다.
- **"애플리케이션 매니페스트 파일"**을 선택하고, 이름을 app.manifest로 지정한 후 "추가" 버튼을 클릭합니다.
- 이 작업으로 프로젝트에 app.manifest 파일이 생성됩니다.
Step 2: app.manifest 파일에 관리자 권한 설정 추가
app.manifest 파일을 열고, requestedExecutionLevel을 **requireAdministrator**로 설정하여 애플리케이션이 관리자 권한을 요구하도록 합니다.
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v3" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" name="MyApp.app" /> <!-- 요청된 실행 레벨 설정 --> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </assembly> |
- level="requireAdministrator": 애플리케이션을 실행하려면 관리자 권한이 필요합니다.
- uiAccess="false": 사용자 인터페이스 접근 권한을 설정합니다. 기본적으로 false로 설정되며, 특정 상황에서만 true로 설정합니다.
Step 3: 프로젝트 빌드 및 실행
- 프로젝트를 다시 빌드합니다. 이때 app.manifest 파일에 설정한 권한이 자동으로 반영됩니다.
- 관리자 권한이 필요한 애플리케이션을 실행하면, Windows에서 사용자 계정 컨트롤(UAC) 팝업이 나타나고, 사용자가 "예"를 선택해야 실행됩니다.
2. app.manifest 파일에 추가할 수 있는 다른 설정들
app.manifest 파일에는 권한 설정 외에도 여러 중요한 설정을 할 수 있습니다. 예를 들어, 애플리케이션의 최소 Windows 버전, DPI 설정, 그리고 다중 프로세서 사용 등을 지정할 수 있습니다.
예시: 최소 Windows 버전 설정
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <!-- 최소 Windows 7 이상 --> <application xmlns="urn:schemas-microsoft-com:compatibility.v1"> <supportedOS Id="win7" /> </application> </compatibility> |
예시: DPI 호환성 설정
<application xmlns="urn:schemas-microsoft-com:asm.v3"> <!-- DPI 자동 크기 조정 --> <windowsSettings> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware> </windowsSettings> </application> |
3. 관리자 권한 없이 실행하려면
만약 관리자가 아닌 권한으로 실행하고 싶다면, requestedExecutionLevel을 **asInvoker**로 설정할 수 있습니다. 이 경우 애플리케이션은 호출한 프로세스와 동일한 권한을 사용하여 실행됩니다.
<requestedExecutionLevel level="asInvoker" uiAccess="false" /> |
이 설정은 기본값으로 관리자가 아닌 사용자 권한으로 실행됩니다.
결론
app.manifest 파일을 사용하면 애플리케이션이 실행될 때 필요한 권한 및 설정을 정의할 수 있습니다. 관리자 권한이 필요한 애플리케이션의 경우 requestedExecutionLevel을 requireAdministrator로 설정하여 관리자 권한을 요구하도록 할 수 있습니다. 이를 통해 Process.GetProcessById().Kill() 등의 중요한 작업을 수행할 때 필요한 권한을 보장할 수 있습니다.
'c# 언어 > 중급과정' 카테고리의 다른 글
[Dot.Net]AppDomain.CurrentDomain.BaseDirectory: 현재 실행 중인 프로그램의 경로를 반환합니다. (0) | 2025.01.18 |
---|---|
Json 구조체.출력형태 코드(따로따로, 혹은 전체) (0) | 2025.01.16 |
C#의 Queue<T>는 기본적으로 동적 크기로 결정됩니다. (0) | 2025.01.09 |
언어에서의 메모리 정렬 및 패딩 (0) | 2025.01.04 |
Winsows Form에 DataGridView를 이용한 네이버 부동산 크롤링 데이타 표시(서울시.마포구) (0) | 2025.01.01 |