描述:
我用VC++ ATL做了一个进程外服务:Com.EXE。用MFC调用,发现在任务管理器中自动创建了Com.EXE进程,不过用户名是我当前WINDOWS用户名。
我想使这个进程成为NETWORK SERVICE,以便被asp.net调用。不知道该怎么办?
解决方案1:
你的这个组件属于DCOM service
MyService.exe -RegServer
这个是注册组件,而不是注册服务!
对于ATL作的DCOM服务,用下面的命令行,即注册组件,又注册为服务
MyService.exe -Service
然后就可以在“组件服务”工具中看到这个服务了。
在“组件服务、服务”工具中找到这个服务,点右键选属性,修改这个服务的登录身份为“Network Service”(其实用别的身份也可以,不必和网站的运行身份相同)
XP/2003以及打了SP4的2000,对DCOM的安全性做了加强,缺省是只有管理员才能启动和访问DCOM服务器的。你需要在“组件服务、组件服务、计算机、我的电脑、DCOM配置”中找到你的DCOM服务器(MyService),点右键选属性,选“安全”夹,编辑“启动”和“访问”权限。使网站的运行身份(对IIS5是IWAM_XXXX或者IUSR_XXXX,对IIS6是Network Service)可以启动和访问你的DCOM服务器。
启动权限是指谁可以启动你的DCOM服务器的进程,即启动服务。访问权限是指谁可以调用DCOM服务器组件的方法。这两个权限不是一回事。一般地,启动者应该也能访问,但反之不一定。