あなたはVistaでは管理者権限でアプリケーションを実行した場合、それは動作しますか?
また、このコードを使用して昇格した権限を持つCOMオブジェクトを作成することができます。
HRESULT __stdcall CreateElevatedComObject(HWND hwnd, REFCLSID rclsid, REFIID riid, __out IUnknown ** ppv)
{
OSVERSIONINFO ver={sizeof(ver)};
if (GetVersionEx(&ver) && ver.dwMajorVersion > 5)
{
BIND_OPTS3 bo;
WCHAR wszCLSID[50];
WCHAR wszMonikerName[300];
if (StringFromGUID2(rclsid, wszCLSID, ELEMENTS(wszCLSID)))
{
HRESULT hr = StringCchPrintf(wszMonikerName,
ELEMENTS(wszMonikerName),
L"Elevation:Administrator!new:%s",
wszCLSID);
if (FAILED(hr))
return hr;
memset(&bo, 0, sizeof(bo));
bo.cbStruct = sizeof(bo);
bo.hwnd = hwnd;
bo.dwClassContext = CLSCTX_LOCAL_SERVER;
return CoGetObject(wszMonikerName, &bo, riid, (void **)ppv);
}
return E_FAIL;
}
else
return ::CoCreateInstance(rclsid,NULL,CLSCTX_ALL,riid,(void**)ppv);
}
UACの下で実行
は、それが昇格ダイアログを提示します。オブジェクトはdllhostのプロセス外で実行されますが(私は思うが)完全な管理者権限を持っている。
もstep by step guide for UAC in Vistaを見てください。展開する際にUACの対処について
ありがとうございます。いいえ、管理者権限では動作しません。私はこのコードを私の現在のOCXに入れることができます。これによってジアグが出現するでしょうか?これはWebページから実行されるOCXであることに留意してください。 ありがとうございます。 – LilMoke
いいえ、COMオブジェクトを作成するために使用している通常のコードの代わりにこれを実行する必要があります。 IEの中で実行している場合は、実行時に権限を意図的に削除するため、セキュリティの境界がさらに広がります。 –
あなたは右IEをクリックして、これはIEがいっぱいフィルタリングされていない管理者として実行するようになります「管理者として実行」を選択した場合 - あなただけ正常にそれを実行した場合、その後、VistaはIE(または実際に任意のプロセス)は、実際の管理者権限なしで実行するようになります、マシンの管理者であっても –