Tebrikler, bu UAC çalışmak üzere tasarlanmıştır tam olarak nasıl olduğunu ve bir şey önce bütün bunlar çoğu uygulama geliştiricileri ya hiç ya da çok korkutmak için çok korkmuş gibi düşünmeye devam ediyorlar
Özetle, ayrı bir COM nesnesinde (DLL'de bulunan) yükseltmeye gereksinim duyan kodu koyarsınız. here tarif edilen metodu kullanarak yükseltilmiş örneği.
HRESULT CoCreateInstanceAsAdmin(HWND hwnd, REFCLSID rclsid, REFIID riid, __out void ** ppv)
{
BIND_OPTS3 bo;
WCHAR wszCLSID[50];
WCHAR wszMonikerName[300];
StringFromGUID2(rclsid, wszCLSID, sizeof(wszCLSID)/sizeof(wszCLSID[0]));
HRESULT hr = StringCchPrintf(wszMonikerName, sizeof(wszMonikerName)/sizeof(wszMonikerName[0]),\
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, ppv);
}
anahtar lakap adına Elevation:Administrator!new:
öneki. Bu, yükselme isteminin tetiklenmesine neden olur ve sonuçta ortaya çıkan COM nesnesi yükseltilmiş bir simgeyle oluşturulur.
Awesome! Teşekkürler! Tam da aradığım şey! – MathOldTimer