본문 바로가기
Delphi, RadStudio

[개발/delphi] Vista에서 프로그램 권한상승하기

by SB리치퍼슨 2011. 8. 1.
<meta charset="utf-8" />여기 없어서 문서와 소스 올립니다.

Windows Vista에서 레지스트리나 RegisterWindowMessage...뭐 좀 건드는거 하면 
조용히 실행 안해서 프로그램 오류인가 비스타와 궁합 등등 속썩이는 경우.
관리자 권한으로 실행하여 User Account Control (UAC)을 띄워하라고 하여 했더니 되고요.
설치시하거나 델2007이상하면 되다는데 그럴 여건은 안되고...

첨부 문서대로 res파일을 만든후, 빌드하면 실행파일의 권한이 상승되어 
비스타에서 잘 됩니다.
여기저기 찾아봐도 어려운 말이 많아서요, 일단 간단하게 되긴되는데 맞는 방법인지는....

(첨부파일의 WindowsVista.rc, WindowsVista.manifest 그대로 사용하시려면 1,2 생략 해도 됩니다)
1. 일단 메모장에 아래 소스 넣고 파일명을 예로 WindowsVista.manifest 라고 하여, 지금 코딩하는 소스폴더에 저장합니다. 
<!--CodeS-->
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
  <assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="*"
    name="MyApplication"
    type="win32"/> 
  <description>Delphi Elevation Demo</description> 
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="requireAdministrator"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

<!--CodeE--> 

2. 메모장 하나더 열어 아래 소스 넣고 파일명을 예로 WindowsVista.rc라고 하여, 지금 코딩하는 소스폴더에 저장합니다.
<!--CodeS-->
1 24 "WindowsVista.manifest"
<!--CodeE--> 

3. 코딩중인 소스의 project 소스에 맨위에 {$R 'WindowsVista.res' 'WindowsVista.rc'} 한줄 넣고 
저장후 빌드합니다, 안되면 project를 닫은후 다시 열어 빌드합니다
WindowsVista.res 미리 만들지 않았다면 첨부파일에서 이걸 복사해 넣구요, 빌드하면 됩니다. 새로 빌드됩니다.
<!--CodeS-->
program Project1;

{$R 'WindowsVista.res' 'WindowsVista.rc'}

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
<!--CodeE--> 

여기저기 둘러보니 뭐만들고 뭐만들고 하던데요. 그냥 어셈블리소스를 로딩해도 끝나더라구요.
되긴 되던데...방법이 맞는지...
첨부 PPT (21_VistaUACandDelphi[1].ppt)보시면 이해가 갑니다.


출처: http://blog.naver.com/erroring/150097804539

 

반응형

댓글