本帖最后由 xixdy 于 2014-05-06 21:48:00 编辑

解决方案 »

  1.   

    附上项目代码
    http://download.csdn.net/detail/xixdy/7310367VS2012创建的项目
    ATLTest01是ATL项目选择服务程序类型创建的,然后加了一个简单ATL对象,全部按缺省选项
    MFCTest01是对话框缺省模板生成ATLTest01直接编译成可执行文件,这个时候MFCTest01是可以正确调用的。但是执行ATLTest01.exe /service注册成服务后就无法调用了。
    hr = CoGetClassObject( clsid, CLSCTX_LOCAL_SERVER, NULL, IID_IClassFactory, (void**) &pCF );
    这句就直接出错
    我想知道要怎样才能把COM组件注册成服务,能解决小弟疑惑,分数不够还可以再加
      

  2.   

    程序名 /Service 就注册成服务了
      

  3.   

    系统服务要注册到SCM,然后运行起来
      

  4.   

    http://blog.csdn.net/johe2003/article/details/4156118
    我也碰到类似问题,照上面说的也没能解决
      

  5.   

    http://blog.csdn.net/debehe/article/details/2291771
      

  6.   

    我先用 /RegServer ,马上再用 /Service,得到的结果仍是楼主得到的结果。是不是得需要设置 CoInitializeSecurity 啊?
    怎么用呢?我使用 
    ConvertStringSecurityDescriptorToSecurityDescriptorW(_T("D:AI(A;OICI;GA;;;WD)"), SDDL_REVISION_1, &pSecDescriptor, NULL);
    得到的安全描述符,调用 CoInitializeSecurity  失败:
    错误 0x80070551: 安全描述符格式不正确(绝对或自相关的)