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 을 사용한다.
mt.exe -manifest "woojja.exe.manifest" -outputresource:"woojja.exe";#1

Library 파일(dll)의 경우 옵션값 2 를 사용한다.
mt.exe -manifest "woojja.dll.manifest" -outputresource:"woojja.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 ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형

+ Recent posts