【发布时间】:2013-07-24 14:19:46
【问题描述】:
我已经用 C# 创建了一个 Windows 服务应用程序。我正在尝试使用 Windows Server 2012 上的“托管服务帐户”运行服务。问题是,我无法设置服务应该运行的帐户。当我设置服务的属性时,我收到一个错误“文件名或扩展名太长”。谷歌搜索没有一点帮助,似乎没有其他人遇到过这种问题。
以下是我所做的一些细节:
1) 在 Visual Studio 2012 中创建了服务应用程序。该服务位于命名空间中,因此可执行文件名称或多或少类似于 Name1.Name2.ServiceName.exe
2) 将服务安装在应该可以正常运行的机器上(使用 installutil.exe)
3) 按照以下视频中的步骤在 Active Directory 域中创建“托管服务帐户”:http://www.youtube.com/watch?v=6i4j0O3suNk。简而言之,它使用 Windows Power Shell 的 Active Directory 模块。在 Power Shell(以管理员身份运行)中,我需要执行以下命令:
import-module ActiveDirectory
New-ADServiceAccount -name ServiceAccountName -enable $true
Add-ADComputerServiceAccount -Identity HostName -ServiceAccount ServiceAccountName
在 HostName 主机上(我想运行服务的地方)我也需要运行
Install-ADServiceAccount -Identity ServiceAccountName
到目前为止一切都很顺利
4) 在我的服务属性中的管理工具 -> 服务中,在“登录”选项卡上选择“此帐户”并搜索 ServiceAccountName。它觉得没问题,但是当我尝试单击“确定”时,它告诉我输入有效密码。现在 AFAIK 托管服务帐户的密码应该为空,所以我删除它,然后按 OK 给我这个无意义的错误“文件名或扩展名太长。”
5) 我也在管理工具 -> 本地安全策略 -> 本地策略 -> 用户权限分配 -> 作为服务登录,但结果是一样的。
我想以“Windows Server 2012”的方式执行此操作,而不为该服务创建常规用户帐户,但我不知道为什么会弹出此错误。提前感谢您的任何提示。
【问题讨论】:
标签: c# windows-services active-directory windows-server-2012