이때문에 프로그램을 실행할때 관리자 권한으로 실행하도록 유도해야 하는데, 기본적으로 프로그램은 일반 유저모드로 실행이 되기 때문에 프로그램을 사용하는 사용자에게 "관리자 권한"으로 실행할 것을 인지시켜주지 않으면 예기치 않은 오류를 발생시킬 수 있다.
Vista이상의 운영체제에서 프로그램을 관리자 권한으로 실행시키기 위해 프로그램 실행전에 사용자에게 묻게 하는 행위를 하도록 하는것은 생각보다 매우 간단하다.

해당 리소스 파일의 내용중 프로그램을 실행하는데 있어서 필요한 권한을 설정해주는 Manifest 에 "asInvoker"라고 되어 있는 부분 때문에 사용자 모드로 프로그램이 실행되게 되는 것이다.
해당 리소스 내용을 복사한후, 삭제해버리자.
그리고 우리가 만든 리소스 파일을 추가해주면 된다. 관리자 권한으로 실행할 수 있도록 말이다.
원래의 리소스 파일에서 Manifest부분을 추출하면 아래와 같다.(컴파일러마다 다를 수 있음)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="CodeGear RAD Studio"
version="11.0.2902.10471"
processorArchitecture="*"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker" => "requireAdministrator"로 변경하여 준다.
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="CodeGear RAD Studio"
version="11.0.2902.10471"
processorArchitecture="*"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker" => "requireAdministrator"로 변경하여 준다.
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
위와 같이 수정이 완료되었다면 이제 리소스 파일을 만들어 프로젝트에 추가하도록 하자.
1. 해당 파일을 "프로젝트명.manifest"라고 저장한다.
2. "프로젝트명.RC"파일을 만든다.
1 24 "프로젝트명.manifest"
3. 리소스 컴파일을 한다. BRCC32 "프로젝트명.RC" -o "프로젝트명.elv"
4. 프로젝트 파일에 리소스를 추가하여 준다.
{$R *.res}
{$R '프로젝트명.elv' '프로젝트명.rc'}
{$R '프로젝트명.elv' '프로젝트명.rc'}
이제 만들어진 응용 프로그램을 Vista 또는 Windows7에서 실행시켜보자.
예전에는 묻지 않던 관리자 권한으로의 실행 여부를 묻는 다이얼로그 창이 나타나게 될 것이다.
헌데, 해당 리소스 파일을 만들어 작업을 하게되면 Build시 아래와 같이 Warning Error를 볼 수 있게 된다.
(사실 이 부분을 설명하기 위해 앞의 내용을 작성한 것이다. 이 포스팅에서는 아래의 부분이 내가 말하고 싶었던 부분 -_-;)
[DCC Error] E2161 Warning: Duplicate resource: Type 24 (user-defined), ID 1; File D:\Grissom.Kim\My Documents\RAD Studio\Projects\프로젝트명.elv resource kept; file D:\Grissom.Kim\My Documents\RAD Studio\Projects\프로젝트명.res resource discarded.
저 Warning 에러는 어떻게 없애야 하는가?
Project -> Option -> Application 다이얼로그 창을 띄운후 해당 다이얼로그에서 "Enable Runtime themes" 부분을 Uncheck해주면 된다.
이제 Warning Error가 사라지고 깔끔하게 Build 되는 것을 볼 수 있다.