3

我正在尝试使用注册 atl 服务

ExeName.exe /服务

如此处所述:http: //msdn.microsoft.com/en-us/library/74y2334x (VS.80).aspx

但是,这样做之后,它并没有出现在我的服务控制面板中(我通过在 vista 的开始框中键入 Services 进入的那个)。

我试图挖掘 atl 代码以查看它处理 /service 开关的位置,但找不到它,尽管我可以找到处理 /RegServer 和 /UnregServer 的代码

这曾经有效,我以前以某种方式设法注册了此服务。但是,现在我已经移动了它的位置,并且无法再次注册它。当我运行 ExeName.exe /service 时,如果我先执行 /RegServer,它会作为本地服务器启动,但我希望它作为服务安装。

我是否遗漏了什么,您知道 /service 开关的处理在哪里完成吗?

4

4 回答 4

2

使用开箱即用的 CAtlServiceModule::Install 方法运行,您必须在每个参数上使用正确的大写字母 - “/Service”、“/UnregServer”等。

于 2011-01-08T00:09:39.487 回答
1

在黑暗中射击:你在 Vista 上运行吗?如果是这样,请确保您以完整的管理员权限运行。否则,您可能正在通过虚拟化注册此应用程序。

于 2008-11-06T15:58:00.163 回答
1

与 JaredPar 一样,尝试使用具有完全管理员权限的 Power Shell 命令。

于 2009-01-21T00:44:21.243 回答
0

检查您是否不小心在 atlbase.h 中定义的类 CAtlServiceModuleT 中的函数 ParseCommandLine 的名称中键入了某些字符

如果你这样做了,这个函数的一个版本也在基类中,这意味着一切都会很好地编译,你可能需要一整天的时间才能发现这个愚蠢的错误!

;-)

于 2008-11-06T16:29:31.613 回答