[VB.NET] Application UAC 상승시키기.
Registry 를 수정하는 Application 을 제작하였다.
기존에는 VisualStudio 의 UAC 를 상승시켜 사용을 하다보니 UnauthorizedAccessException 을 만나지 않았었다.
그래서 기존에 제작한 Application 의 UAC 를 상승시켜야만 했다.
UAC 를 상승시키는 한가지 방법으로 실행파일의 Manifest 를 사용하는 방법이 있다.
이방법을 사용하기위해선 Manifest 파일과 mt.exe 파일을 사용해야만 하는데 먼저 manifest 파일을 보게되면
대략 아래와 같다.
1 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
3 <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
4 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
5 <security>
6 <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
7 <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
8 </requestedPrivileges>
9 </security>
10 </trustInfo>
11 </assembly>
이 파일에서 requestedExecuteionLevel 의 level 값이 중요한데 기본적으로 "asInvoker" 로 되어 있다.
이 값은 UAC 상승없이 실행하며 호출 Process 의 권한을 이용하도록 되어있다.
따라서 나같은 경우 Application 의 Debug 가 VisualStudio 의 UAC 를 바탕으로 실행이 되었으므로 UAC 가 상승되어 있는 상태였으므로 맘대로 Registry 를 건드릴수 있었던 것이다.
다른 값으로 "highestAvailable" 이 있는데 이것은 호출 Process 가 가지고 있는 권한 중 가장 높은 권한을 사용하는 옵션이다.
여기서 내가 사용할 값은 "requireAdministrator" 으로 실행시 관리자 권한으로 UAC 상승을 요청하도록 하는 옵션인데 따라서 확인창이 뜨게 된다.
내가 사용하는 방법을 간단히 소개를 했는데...
위 방법을 사용하려면 먼저 manifest 파일을 얻어야 한다.
간단히 얻는 방법이 있다.
woojja.exe 의 실행파일인 경우 실행파일이 컴파일되는 Target Folder 에 가보면 ("bin" Folder 에 "Debug", "Release" Folder)
woojja.vshost.exe.manifest 라는 파일이 보일 것이다.
ㅋㅋㅋ 이것을 사용하자.
파일을 복사하여 "woojja.exe.manifest" 라는 이름의 파일로 만들자...
그리고 파일을 열어
requestedExecuteionLevel 의 level 값을 "asInvoker" 에서 "requireAdministrator" 로 수정하자.
저장하고...
이제 mt.exe 를 실행시켜야 할 것이다.
mt.exe 파일의 위치는
"C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin"
에 있다.
Version 에 따라
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin" 에도 존재한다.
이제 실행시키자.
실행파일(exe)인 경우 옵션값 1 을 사용한다.
Library 파일(dll)의 경우 옵션값 2 를 사용한다.
D:\wizExpert\Source\woojja\Deploy>"C:\Program Files\Microsoft SDKs\Windows\v7.0A\
bin\mt.exe" -manifest "woojja.exe.manifest" -outputresource:"woojja.exe";#1
Microsoft (R) Manifest Tool version 5.2.3790.2076
Copyright (c) Microsoft Corporation 2005.
All rights reserved.
D:\wizExpert\Source\woojja\Deploy>
그러면 요로케 나올 것이며...
아래와 같이 UAC 확인창이 뜰 것이다.
^^
행복한 고수되셔요...
woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\