在安装开发于.NET平台的Windows服务时出现错误

65

我使用C#和Visual Studio 2008开发了一个Windows服务。我的计算机上安装了Windows XP SP2。当我尝试使用installutil工具安装服务时,在输入用户名和密码后,我遇到了以下错误。

在安装阶段发生了异常。 System.ComponentModel.Win32Exception: 帐户名称无效或不存在,或指定的帐户名称的密码无效。

但是该用户确实存在。我通过控制面板→ 用户帐户创建新帐户 创建了该用户。

我用于安装服务的命令是:

installutil /i TestService.exe

我该如何解决这个问题?

3个回答

147

如果账户是本地用户账户,在安装程序提示输入用户名和密码时,请尝试使用.\用户名

.\代表本地计算机。

服务需要完全限定的用户名(包括域名),因此在安装时,您需要明确指定本地用户账户。


我意识到这个问题很老了,但是非常感谢!我没有想到那个。 - Vivelin
1
只是为了澄清,这意味着如果它是域用户,则使用方式为 domainName\username - Beytan Kurt
我也遇到了同样的错误,最终发现这与账户或本地登录策略无关。确保安装了正确的框架版本!我们的服务是基于.NET 4.8创建的,但该运行时未安装在该计算机上(只有4.5)。 - Kris Oye
你怎么知道这些东西的?! :) 简直太神奇了,谢谢。 - Sabuncu

3

账户可能还需要被赋予“作为服务登录”账户权限;将SE_SERVICE_LOGON_NAME常量传递给LsaAddAccountRights() API。


-1
我通过将 ServiceProcessInstaller.Account 更改为 LocalSystem 来解决了这个问题,现在它可以正常工作了。

3
这不是一个答案,看起来更像是一条评论。 - The Hungry Dictator
1
更改账户可能不是最佳解决方案,但它是一个答案,而不仅仅是一个“评论”。 - Brian
1
这不是推荐的方法。本地系统在计算机上拥有广泛的特权,类似于管理员。请参阅此答案以获取内置帐户的概述。 - Jason Capriotti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接