以用户身份安装Windows服务

时间:2009-11-12 11:51:29

标签: c# windows-services service registry

我目前正在创建一个Windows服务应用程序,该应用程序将监视对HKEY_USERS注册表中的某些键所做的更改。我这样做的方法是收集当前用户的SID。我遇到的问题是由于当前作为本地系统运行的服务而返回管理员SID。

我需要系统做的是收集并返回当前登录用户的SID(我不是指本地服务,本地系统或网络服务,而是通过GINA登录Windows的人),所以我需要服务的是以该用户身份运行。这也将允许服务写回用户网络驱动器,这是该程序的目的。

我遇到的问题是,当我尝试使用installutil.exe安装用户服务时,它会询问用户名和密码,现在我已经尝试了自己的凭据(我有一个管理员和非管理员帐户)但是它没有任何加上我希望用户根据登录的人改变而不是修复。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:2)

当前用户”假设是桌面Windows概念,即使不再是真实用户切换。 Windows服务层在桌面和服务器变体中相当普遍,并没有真正处理好这一点。它位于交互式会话层下方。其中一种表现方式是即使没有用户登录也能运行服务。

答案 1 :(得分:1)

这一切似乎有点困惑。可以通过远程桌面等登录任意数量的人。如果您作为服务想要查看他们的注册表,您肯定不会通过HKCU到达那里。如果你想要这样的东西,你应该使用autorun exe而不是服务。任何事情,如检查会话和注入内容以访问会话中加载的注册表配置单元都是过度杀伤,并且不太可能以任何方式清理。

答案 2 :(得分:0)

您可以找到与explorer.exe等每个用户一起运行的进程,然后获取运行该进程的用户的SID(您可以在函数here中使用WMI)

相关问题