每当安装/重新安装Windows服务时,我想将设置用户分配给服务,即。如果服务在带有密码的用户test123下运行,我需要确保在安装程序运行时,服务是附加到同一用户(而不是任何本地系统(System.ServiceProcess.ServiceAccount.LocalSystem))。
//Check whether my service exists- MyWinService is my service name.
System.Management.SelectQuery sQuery = new System.Management.SelectQuery(string.Format("select Name,startname from Win32_Service where name ='MyWinService' "));
using (System.Management.ManagementObjectSearcher mgmtSearcher = new System.Management.ManagementObjectSearcher(sQuery))
{
foreach (System.Management.ManagementObject service1 in mgmtSearcher.Get())
{
string servicelogondetails =
string.Format("Name: {0} , Logon : {1} ", service1["Name"].ToString(), service1["startname"]).ToString();
MessageBox.Show(servicelogondetails).ToString();
}
}
我无法找到passsword属性来分配它(我不想查看/读取,只是分配回来)。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa394418(v=vs.85).aspx
System.ServiceProcess.ServiceProcessInstaller installer=new
System.ServiceProcess.ServiceProcessInstaller();
installer.Account = System.ServiceProcess.ServiceAccount.User;
我的问题是,如果我分配给ServiceAccount.User,我是否需要重新设置用户名&密码或其ServiceAccount.User将负责用户名和密码? 如果我需要将密码分配回安装程序,我该怎么做?提前谢谢。
installer.Password = <<something>>;
installer.Username = <<something>>;
PS:System.Management.dll被引用到项目&amp;正在使用System.Management添加到命名空间,以便System.Management.SelectQuery工作。
答案 0 :(得分:0)
为安装程序分配UserName,密码是可选的。如果未通过,则在安装服务时将提示。
如果您想分配userName&amp;密码,你可以通过读取一些外部配置文件并分配它们来实现。
我不知道有一种方法可以从现有服务中检索用户凭据并分配它们。