是否有可能以编程方式设置Windows服务的用户帐户?
我已创建一个帐户设置为用户的Windows服务。这意味着当我安装服务时,我需要传递用户名和密码。有没有办法在BeforeInstall事件中设置这些可能在ProjectInstaller类中?如果是这样的话?是否有可能以编程方式设置Windows服务的用户帐户?
通常情况下,您将能够将这些凭据传递给安装程序类。您可以对其进行硬编码或将其作为命令行参数传递。第二种方法更合适,但它需要您不必要地解析命令行参数。
我建议你第三种方法......
<ShamelessPlug>
嗨!我是一个开源的 源窗口服务托管 架构称为Daemoniq。并且通过命令行传递 凭证是其中的一个 其功能。您可以从 http://daemoniq.org
当前功能下载包括:
- 容器不可知的服务通过CommonServiceLocator
- 设置常用的服务像服务名,显示名,说明 和serviceStartMode特性通过的app.config
位置- 在同一进程上运行多个Windows服务
- 通过app.config设置恢复选项
个- 组服务通过的app.config
- 一套服务流程凭证通过命令行
- 安装,卸载,调试服务,通过命令行依赖于
</ShamelessPlug >
干杯!
无耻的东西,不再有任何东西。 – Grubsnik 2016-01-21 13:45:59
下面添加到项目安装程序将在安装期间分配服务登录信息。
public ProjectInstaller()
{
InitializeComponent();
serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.<account type>;
serviceProcessInstaller1.Username = <domain\userId>;
serviceProcessInstaller1.Password = <password>;
}
如果您未在代码中指定帐户并且将ServiceProcessInstaller Account for Account属性设置为User,则在安装期间将打开表单对话框,以便执行安装的个人可以指定域用户帐户和密码。 – JohnL 2015-05-27 20:12:11
您可以使用它在运行时(而不是编译时)设置用户名和密码吗?你不需要能够到达已经编译到服务可执行文件中的安装程序吗?我可能不得不去WMI路线。 – 2012-02-17 21:12:12
您的服务可以拥有自己的安装程序类,它从“System.Configuration.Install.Installer”继承。我们使用这个继承的类并将它与表单关联起来。表单在安装期间出现并提示各种事情,包括用户/密码。然后在Installer类中重写OnBeforeInstall并设置Me。ServiceProcessInstaller1.Username。 – MattH 2012-02-21 18:33:48
并修改WinService中尚存在的windows服务帐号? – Kiquenet 2014-07-04 09:30:32