Beispiel #1
0
        public static object LaunchElevatedCOMObject(Guid Clsid, Guid InterfaceID)
        {
            string CLSID       = Clsid.ToString("B"); // B formatting directive: returns {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
            string monikerName = "Elevation:Administrator!new:" + CLSID;

            BIND_OPTS3 bo = new BIND_OPTS3();

            bo.cbStruct       = (uint)Marshal.SizeOf(bo);
            bo.hwnd           = IntPtr.Zero;
            bo.dwClassContext = (int)CLSCTX.CLSCTX_LOCAL_SERVER;

            object retVal = CoGetObject(monikerName, ref bo, InterfaceID);

            return(retVal);
        }
Beispiel #2
0
        static object CoCreateInstanceElevated(IntPtr parentWindow, Type comClass)
        {
            // B formatting directive: returns {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
            var monikerName = "Elevation:Administrator!new:" + comClass.GUID.ToString("B");

            var bo = new BIND_OPTS3();

            bo.cbStruct       = (uint)Marshal.SizeOf(bo);
            bo.hwnd           = parentWindow;
            bo.dwClassContext = 4;                                                 // CLSCTX_LOCAL_SERVER

            Guid unknownGuid = Guid.Parse("00000000-0000-0000-C000-000000000046"); // IUnknown
            var  obj         = CoGetObject(monikerName, ref bo, unknownGuid);

            return(obj);
        }
Beispiel #3
0
 internal static extern object CoGetObject(
     string pszName,
     [In] ref BIND_OPTS3 pBindOptions,
     [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid);