코드에서 특정 외부프로세스를 종료시키려고 할떄에(이미 프로세스.아이디를 알고 있는경우에), 예를 들어서ㅡ, 자신의 프로그램에서 발생시킨 프로세스의 경우에, Process.GetProcessById().Kill() 을 이용하려면(?)


app.manifest 파일은 애플리케이션에 대한 메타데이터를 포함하는 파일로, 프로그램이 실행될 때 필요한 권한이나 설정을 지정할 수 있습니다. 예를 들어, 프로그램을 관리자 권한으로 실행하려면 app.manifest 파일에 requestedExecutionLevel을 설정할 수 있습니다.

1. Visual Studio에서 app.manifest 파일 생성 및 설정 방법

Step 1: app.manifest 파일 생성

  1. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭한 후, "추가" > **"새 항목"**을 선택합니다.
  2. **"애플리케이션 매니페스트 파일"**을 선택하고, 이름을 app.manifest로 지정한 후 "추가" 버튼을 클릭합니다.
  3. 이 작업으로 프로젝트에 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: 프로젝트 빌드 및 실행

  1. 프로젝트를 다시 빌드합니다. 이때 app.manifest 파일에 설정한 권한이 자동으로 반영됩니다.
  2. 관리자 권한이 필요한 애플리케이션을 실행하면, 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() 등의 중요한 작업을 수행할 때 필요한 권한을 보장할 수 있습니다.

+ Recent posts