2010-02-12 39 views
0

我想创建一个在用户可以登录之前启动的Windows服务。我希望它在登录之前启动,这样我就可以从组中删除一个用户(Windows用户)(HomeUser是精确的),所以我不必重新登录。在登录前启动服务并从组中删除用户

所以我想:

  1. 创建开始之前用户可以登录
  2. 从组中删除用户的服务。

任何想法如何可以在C#中完成?

编辑

对于质询的一部分-2;在这里你如何能做到这一点的链接:http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.groupprincipal.members.aspx

+0

不确定您是否可以使用“RunOnce”注册表项来执行此操作。我认为这与在运行维护时正在使用的Windows队列文件被删除相似。否则,只需修改其中一项服务以“依赖”您的服务。哈克和风险虽然。 – 2010-02-12 18:39:13

+0

是的,我也在考虑这样做,但我想要这样做是正确的。 – ata 2010-02-12 18:46:32

回答

1

如何做到这一点:

使用Windows Service(不WCF服务!)项目在Visual Studio类型。

将您的实施置于OnStart´ method. Add a projectInstaller and configure it to install the service in the Started模式。

编译你的项目,你的projects.exe运行`installutil.exe -i'

这应该安装你的服务,并于下次开机时有它开始。

为什么这样做?:

TBH,它的声音,我喜欢的事,做一次,而不是每次启动'removing从group'用户。除非其他人将用户放回组中,否则它将保持您最后一次设置的方式。因此,每次冷启动都会变得多余。

还记得,修改安全设置是一个相当高的特权。没有多少帐户可以做到这一点。确保您的服务安装了具有这些级别许可的身份。

+0

移除用户部分;我正在提供这项服务,所以我不必每次都删除用户。我不知道为什么,但当我重新启动时,Windows将用户重新分组。 – ata 2010-02-12 19:12:34

+0

只是一个奇怪的想法,但它有什么办法可以防止Windows将该用户放入组中?还是你绑定到一个域控制器这样做?我认为最好避免这个问题发生,而不是试图在事后扭转它。是否有更多信息可以/可以/愿意给用户帐户?听起来像'家庭'方向必须有解决方案。 – 2010-02-12 19:24:57

+0

刚刚在HomeUsers小组上完成了一些阅读。乍一看,它似乎与Samba和相关主题的联网。但是碰到我的是GPO的提及。这将是'在'用户被允许登录之前'执行功能'的'正确'方法。至少,这就是你可以在域中使用它的东西。如果这是真的,那么我会建议设立一个GPO,他会从你的组中移除你的用户。退房 http://technet.microsoft.com/en-us/library/cc766208%28WS.10%29.aspx(vista版本)。也许你将用户插入HomeUsers组本身就是一个GPO! – 2010-02-12 19:40:37

1

开始在开机的东西任何服务可以做到的,只要它不需要任何GUI操作。它是服务的启动选项之一。只要这样设置,你就可以走了。

至于使C#程序成为服务,我不太确定。也许他们有一些东西,但我想你至少需要将它包装在一些非托管的C++中,以便与Windows Service API接口。

+0

我确实知道如何创建一个服务,但并没有任何想法如何在用户登录之前启动它。 – ata 2010-02-12 18:45:17

+0

好。它*有点*从你提出问题的方式看待这种方式,但我不确定。 – 2010-02-12 20:13:55

相关问题