服务程序权限问题,启动solidwork程序

上岸の鱼 2011-01-13 01:59:38
我建了一个服务程序,

//创建服务
SC_HANDLE hService = ::CreateService(
hSCM, szServiceName, szServiceName,
SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,
SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL,
szFilePath, NULL, NULL, _T(""), NULL, NULL);

然后在自己的ServiceMain里面去启动SolidWorks程序(一个三维软件),如下

CString lpszProgID;
lpszProgID.Format(_T("SldWorks.Application.%d"),progID);//int progID;
HRESULT hr;
CLSID clsid;
hr = ::CLSIDFromProgID(lpszProgID, &clsid);
if (FAILED(hr))
{
OutputDebugString(_T("OpenSW--error: CLSIDFromProgID function failed"));
return FALSE;
}
OutputDebugString(_T("OpenSW---before CoCreateInstance"));
hr = ::CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, __uuidof(ISldWorks), (void**)&m_iSldWorks); //这里每次都失败
if (FAILED(hr))
{
OutputDebugString(_T("error: CoCreateInstance function failed"));
return FALSE;
}

上面的启动若在不是服务程序里能成功完成,但在服务程序中失败。
我问我我们公司的一个大牛,他说是服务程序的权限问题,服务 = system权限,而启动SolidWorks需要普通权限。
我不是很明白,为什么system权限连普通权限都不如么
他告诉我他以前做的是通过另外做一个工作启动solidworks,然后在服务中调用启动那个工具。
我想问大家,真若是权限问题的话,难道就只能这么做了么?能通过那个CreateService函数来改变权限或者其他方法来做么?
...全文
361 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
上岸の鱼 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hdt 的回复:]
try

把服务设为允许合桌面交互
[/Quote]
。。太感谢了。。。虽然后续的还不是很确定是否可以正常调用,当刚才改成SERVICE_INTERACTIVE_PROCESS|SERVICE_WIN32_OWN_PROCESS后就真的可以起来了。。。

以前我自己太粗心了,直接SERVICE_INTERACTIVE_PROCESS起不来,刚又尝试把两个或起来就可以了
真相重于对错 2011-01-13
  • 打赏
  • 举报
回复
try

把服务设为允许合桌面交互
见习学术士 2011-01-13
  • 打赏
  • 举报
回复
可以在
这里设置一下登陆用户,一般设置成administrator
上岸の鱼 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jyh_baoding 的回复:]
是不是你的程序依赖其他的资源
[/Quote]
没有依赖,同样的环境下,就算在服务没注册的时候,放在winMain入口函数中启动也可以起来。但如果注册服务后,在服务管理器中点击启动之后就起不来
jyh_baoding 2011-01-13
  • 打赏
  • 举报
回复
是不是你的程序依赖其他的资源

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧