यह सिर्फ एक तरक्की करना असंभव है फू नक्शन या एकल प्रक्रिया का कोई अन्य भाग, क्योंकि ऊंचाई स्तर एक प्रति-प्रक्रिया विशेषता है। गर्भावस्था के साथ ही, आपकी प्रक्रिया को या तो बढ़ाया जा सकता है या नहीं। यदि आपको ऊंचा चलने के लिए अपने कोड के कुछ हिस्से की आवश्यकता है, तो आपको एक अलग प्रक्रिया शुरू करनी होगी।
HRESULT
CreateElevatedComObject (HWND hwnd, REFGUID guid, REFIID iid, void **ppv)
{
WCHAR monikerName[1024];
WCHAR clsid[1024];
BIND_OPTS3 bo;
StringFromGUID2 (guid, clsid, sizeof (clsid)/2);
swprintf_s (monikerName, sizeof (monikerName)/2, L"Elevation:Administrator!new:%s", clsid);
memset (&bo, 0, sizeof (bo));
bo.cbStruct = sizeof (bo);
bo.hwnd = hwnd;
bo.dwClassContext = CLSCTX_LOCAL_SERVER;
// Prevent the GUI from being half-rendered when the UAC prompt "freezes" it
MSG paintMsg;
int MsgCounter = 5000; // Avoid endless processing of paint messages
while (PeekMessage (&paintMsg, hwnd, 0, 0, PM_REMOVE | PM_QS_PAINT) != 0 && --MsgCounter > 0)
{
DispatchMessage (&paintMsg);
}
return CoGetObject (monikerName, &bo, iid, ppv);
}
स्रोत
2008-09-18 15:02:58
संदर्भित लिंक अब काम नहीं करता है। तो आप किसी और के बारे में जानते हैं? – cjbarth