我有一个.NET Winddows服务,它在本地系统帐户下运行。然后,此服务运行COM组件,该组件使用COM Interop在Visual Studio 6上的ATL中编写。然后,此COM组件在SYSTEM帐户下运行。我知道我可以冒充另一个帐户,但现在我想留下他们所在的地方。
问题是在Windows服务停止后,COM组件仍然在运行。我也无法杀死这个过程。任务管理器不会杀死它,所以我从命令行尝试了TaskKill。这甚至表示它成功终止了该过程但是当我检查任务管理器时它仍在运行。我尝试过PSKill,但是说拒绝访问。
我已经筋疲力尽了谷歌寻找解决方案。有人可以帮忙吗?
另外,为什么它仍然在运行?
答案 0 :(得分:3)
杀死进程只是权限问题。假设启用了UAC的Vista / 7,如果您不是以管理员身份运行,则无法终止系统进程。注意 - 成为本地管理员组的成员是不够的。您必须启动任务管理器/进程资源管理器/ pskill或任何使用“以管理员身份运行”以使用管理权限实际运行它们的任何内容。否则,你只是一个普通用户,而你被拒绝了。
至于COM服务器:COM服务器有一个引用计数,只有在计数降到0后它们才会自行关闭。在这种情况下,服务器可能由于以下几个原因而无法关闭: