2009-08-05 92 views

回答

3
+0

您可以使用它在运行时(而不是编译时)设置用户名和密码吗?你不需要能够到达已经编译到服务可执行文件中的安装程序吗?我可能不得不去WMI路线。 – 2012-02-17 21:12:12

+0

您的服务可以拥有自己的安装程序类,它从“System.Configuration.Install.Installer”继承。我们使用这个继承的类并将它与表单关联起来。表单在安装期间出现并提示各种事情,包括用户/密码。然后在Installer类中重写OnBeforeInstall并设置Me。ServiceProcessInstaller1.Username。 – MattH 2012-02-21 18:33:48

+0

并修改WinService中尚存在的windows服务帐号? – Kiquenet 2014-07-04 09:30:32

-1

通常情况下,您将能够将这些凭据传递给安装程序类。您可以对其进行硬编码或将其作为命令行参数传递。第二种方法更合适,但它需要您不必要地解析命令行参数。

我建议你第三种方法......

<ShamelessPlug>

嗨!我是一个开源的 源窗口服务托管 架构称为Daemoniq。并且通过命令行传递 凭证是其中的一个 其功能。您可以从 http://daemoniq.org

当前功能下载包括:

  • 容器不可知的服务通过CommonServiceLocator
  • 设置常用的服务像服务名,显示名,说明 和serviceStartMode特性通过的app.config
  • 位置
  • 在同一进程上运行多个Windows服务
  • 通过app.config设置恢复选项
  • 组服务通过的app.config
  • 一套服务流程凭证通过命令行
  • 安装,卸载,调试服务,通过命令行依赖于

</ShamelessPlug >

干杯!

+0

无耻的东西,不再有任何东西。 – Grubsnik 2016-01-21 13:45:59

4

下面添加到项目安装程序将在安装期间分配服务登录信息。

public ProjectInstaller() 
    { 
     InitializeComponent(); 

     serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.<account type>; 
     serviceProcessInstaller1.Username = <domain\userId>; 
     serviceProcessInstaller1.Password = <password>; 
    } 
+0

如果您未在代码中指定帐户并且将ServiceProcessInstaller Account for Account属性设置为User,则在安装期间将打开表单对话框,以便执行安装的个人可以指定域用户帐户和密码。 – JohnL 2015-05-27 20:12:11

相关问题