Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. cocreateinstanceasadmin failed.

cocreateinstanceasadmin failed.

Scheduled Pinned Locked Moved C / C++ / MFC
c++help
4 Posts 2 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • V Offline
    V Offline
    vishalgpt
    wrote on last edited by
    #1

    i new to c++, need help. I am unable to start Elevation using CoCreateInstanceAsAdmin. why it fails. someone please help. Entire code is given below. ITestCom.dll common.h

    #ifndef _COMMON_H
    #define _COMMON_H

    #include <ObjBase.h>

    // {6A75080D-86FC-45ca-82B9-0A2E0F482072}
    DEFINE_GUID(CLSID_TestCom,
    0x6a75080d, 0x86fc, 0x45ca, 0x82, 0xb9, 0xa, 0x2e, 0xf, 0x48, 0x20, 0x72);

    // {8E6C7162-4D3A-4280-A4FF-33D23F5E1B6F}
    DEFINE_GUID(IIDTestCom,
    0x8e6c7162, 0x4d3a, 0x4280, 0xa4, 0xff, 0x33, 0xd2, 0x3f, 0x5e, 0x1b, 0x6f);

    DECLARE_INTERFACE_(IID_IIDTestCom, IUnknown)
    {
    STDMETHOD (HelloWorld)()PURE;
    };
    #endif

    ITestCom.cpp

    #define WIN32_LEAN_AND_MEAN
    #include <Windows.h>

    #define INITGUID

    #include <ObjBase.h>
    #include <sddl.h>
    #include "common.h"

    #include <tchar.h>
    #include <OleCtl.h>
    #include "ITestCom.h"

    #define MAX_STRING_LENGTH 255
    #define GUID_SIZE 128

    HANDLE g_Module;
    HMODULE g_hModule = NULL;
    ULONG g_cObjects = 0;
    ULONG g_cLocks = 0;

    BOOL APIENTRY DllMain( HANDLE hModule,
    DWORD ul_reason_for_call,
    LPVOID lpReserved
    )
    {
    if (DLL_PROCESS_ATTACH == ul_reason_for_call)
    g_Module = hModule;
    return TRUE;
    }

    STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
    {
    HRESULT hr = NOERROR;
    CTestComFactory *cf = NULL;

    if(CLSID\_TestCom == rclsid)
    {
    	cf = new CTestComFactory();
    	if (NULL == cf)
    		return E\_OUTOFMEMORY;
    
    	//Get the required interface
    	hr = cf->QueryInterface(riid,ppv);
    	if(FAILED(hr))
    	{
    		delete cf;
    		cf=NULL;
    		return hr;
    	}
    }
    else
    	hr = CLASS\_E\_CLASSNOTAVAILABLE;
    	return hr;
    

    }
    BOOL ServerCanUnloadNow(void)
    {
    if (0==g_cObjects && 0 == g_cLocks)
    return TRUE;
    else
    return FALSE;
    }

    STDAPI DllCanUnloadNow(void)
    {
    if(ServerCanUnloadNow()) return S_OK;
    else
    return S_FALSE;
    }

    STDAPI DllRegisterServer(void)
    {
    BOOL bOK;
    TCHAR szModulePath[MAXPATH +1];
    TCHAR szCLSID[GUID_SIZE+1];
    TCHAR szAppID[GUID_SIZE+1];
    TCHAR szCLSIDKey[MAX_STRING_LENGTH+1];
    TCHAR szAppIDKey[MAX_STRING_LENGTH + 1];
    TCHAR szLocal[MAX_STRING_LENGTH + 1];
    WCHAR wszGUID[GUID_SIZE+1];

    GetModuleFileName((HMODULE)g\_Module,szModulePath,MAX\_STRING\_LENGTH);
    //Convert the CLSID to the format
    //{00000000-0000-0000-0000-00000000}
    
    StringFromGUID2(CLSID\_TestCom,wszGUID,sizeof(wszGUID)/sizeof(wchar\_t));
    \_tcscpy(szCLSID,wszGUID);
    
    StringFromGUID2(IIDTestCom,wszGUID,sizeof(wszGUID)/sizeof(wcha
    
    V 1 Reply Last reply
    0
    • V vishalgpt

      i new to c++, need help. I am unable to start Elevation using CoCreateInstanceAsAdmin. why it fails. someone please help. Entire code is given below. ITestCom.dll common.h

      #ifndef _COMMON_H
      #define _COMMON_H

      #include <ObjBase.h>

      // {6A75080D-86FC-45ca-82B9-0A2E0F482072}
      DEFINE_GUID(CLSID_TestCom,
      0x6a75080d, 0x86fc, 0x45ca, 0x82, 0xb9, 0xa, 0x2e, 0xf, 0x48, 0x20, 0x72);

      // {8E6C7162-4D3A-4280-A4FF-33D23F5E1B6F}
      DEFINE_GUID(IIDTestCom,
      0x8e6c7162, 0x4d3a, 0x4280, 0xa4, 0xff, 0x33, 0xd2, 0x3f, 0x5e, 0x1b, 0x6f);

      DECLARE_INTERFACE_(IID_IIDTestCom, IUnknown)
      {
      STDMETHOD (HelloWorld)()PURE;
      };
      #endif

      ITestCom.cpp

      #define WIN32_LEAN_AND_MEAN
      #include <Windows.h>

      #define INITGUID

      #include <ObjBase.h>
      #include <sddl.h>
      #include "common.h"

      #include <tchar.h>
      #include <OleCtl.h>
      #include "ITestCom.h"

      #define MAX_STRING_LENGTH 255
      #define GUID_SIZE 128

      HANDLE g_Module;
      HMODULE g_hModule = NULL;
      ULONG g_cObjects = 0;
      ULONG g_cLocks = 0;

      BOOL APIENTRY DllMain( HANDLE hModule,
      DWORD ul_reason_for_call,
      LPVOID lpReserved
      )
      {
      if (DLL_PROCESS_ATTACH == ul_reason_for_call)
      g_Module = hModule;
      return TRUE;
      }

      STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
      {
      HRESULT hr = NOERROR;
      CTestComFactory *cf = NULL;

      if(CLSID\_TestCom == rclsid)
      {
      	cf = new CTestComFactory();
      	if (NULL == cf)
      		return E\_OUTOFMEMORY;
      
      	//Get the required interface
      	hr = cf->QueryInterface(riid,ppv);
      	if(FAILED(hr))
      	{
      		delete cf;
      		cf=NULL;
      		return hr;
      	}
      }
      else
      	hr = CLASS\_E\_CLASSNOTAVAILABLE;
      	return hr;
      

      }
      BOOL ServerCanUnloadNow(void)
      {
      if (0==g_cObjects && 0 == g_cLocks)
      return TRUE;
      else
      return FALSE;
      }

      STDAPI DllCanUnloadNow(void)
      {
      if(ServerCanUnloadNow()) return S_OK;
      else
      return S_FALSE;
      }

      STDAPI DllRegisterServer(void)
      {
      BOOL bOK;
      TCHAR szModulePath[MAXPATH +1];
      TCHAR szCLSID[GUID_SIZE+1];
      TCHAR szAppID[GUID_SIZE+1];
      TCHAR szCLSIDKey[MAX_STRING_LENGTH+1];
      TCHAR szAppIDKey[MAX_STRING_LENGTH + 1];
      TCHAR szLocal[MAX_STRING_LENGTH + 1];
      WCHAR wszGUID[GUID_SIZE+1];

      GetModuleFileName((HMODULE)g\_Module,szModulePath,MAX\_STRING\_LENGTH);
      //Convert the CLSID to the format
      //{00000000-0000-0000-0000-00000000}
      
      StringFromGUID2(CLSID\_TestCom,wszGUID,sizeof(wszGUID)/sizeof(wchar\_t));
      \_tcscpy(szCLSID,wszGUID);
      
      StringFromGUID2(IIDTestCom,wszGUID,sizeof(wszGUID)/sizeof(wcha
      
      V Offline
      V Offline
      vishalgpt
      wrote on last edited by
      #2

      someone please help..

      Regards, Vishal

      L 1 Reply Last reply
      0
      • V vishalgpt

        someone please help..

        Regards, Vishal

        L Offline
        L Offline
        Lost User
        wrote on last edited by
        #3

        Help what, try explaining what went wrong; did you get an error code, exception etc, and if so what did they indicate?

        d@nish[^] has the answer.

        V 1 Reply Last reply
        0
        • L Lost User

          Help what, try explaining what went wrong; did you get an error code, exception etc, and if so what did they indicate?

          d@nish[^] has the answer.

          V Offline
          V Offline
          vishalgpt
          wrote on last edited by
          #4

          HRESULT hr = CoCreateInstance(CLSID_CExample,NULL,CLSCTX_LOCAL_SERVER,IID_CExample,(void**)&inf); hr value is E_NOINTERFACE No Such Interface Supported. But if CLSCTX_INPROC_SERVER is used then the value of hr is S_OK

          Regards, Vishal

          modified on Friday, April 8, 2011 1:04 PM

          1 Reply Last reply
          0
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          • Login

          • Don't have an account? Register

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • World
          • Users
          • Groups