Vista에서 권한 상승을 위하여 여러가지를 시도 해 보았습니다.
그리고 또한 다른 ActiveX를 호출하기 위해 권한 상승에 대한 instance를 생성해 주고
object를 받아 실행을 해야 하는데요
포함된 압축화일을 보면 여러가지가 있습니다.
activex에 대한 권한 상승을 위한 elevate를 해주는 activex의 소스화일입니다.
manifest 화일과 rc화일 res화일등 모두 첨부되어있으며 ocx를 압축한 cab화일도
포함되어있습니다.
그리고 실제로 호출하여 사용할 테스트 페이지도 알려드리도록 하겠습니다.
http://118.36.237.16/dementor/php/index.html
이며
압축된 동일한 cab 파일이 올려져 있어 설치도 되도록 해 놓았습니다.
그러나 소스를 디버깅하면
dActiveXElevation.pas의
<!--CodeS-->
function CoCreateInstanceAsAdmin(WndHandle: HWND; clsid: TCLSID; iid: TIID; out ppv): HRESULT;
var
BindOpts: TBindOpts3;
Moniker : PWideChar;
t_iid: string;
begin
Moniker := PWideChar(WideString('Elevation:Administrator!new:' + GuidToString(clsid)));
t_iid := GuidToString(iid);
FillChar(BindOpts, SizeOf(BindOpts), #0);
BindOpts.hwnd := WndHandle;
BindOpts.cbStruct := SizeOf(BindOpts);
BindOpts.dwClassContext := CLSCTX_LOCAL_SERVER;
Result := ElevationCoGetObject(Moniker, @BindOpts, iid, ppv);
mCOMObject := IRmsGateX(ppv);
end;
<!--CodeE-->
이 function 에서
ElevationCoGetObject(Moniker, @BindOpts, iid, ppv);
부분에서 결과값이 -2146959337 이 나오며 out 값이 ppv에는 no value 가 들어갑니다.
어떤 부분이 잘못되었는지 알수 없네요.
이곳과 다른 여러 곳을 다 서칭을 해 보았지만...
답을 알수 없었습니다.
activex(A1)도 설치가 되어있고.... activeX(B1)도 설치가 되어있고....
정상이지만....
답을 가져오지 못하고 있으니 정말 답답합니다.
저의 답답함의 갈증을 풀어주세요.