8

我有一个 Windows 服务项目实现,我正在尝试将其安装为网络服务。

process = new ServiceProcessInstaller();
process.Account = ServiceAccount.NetworkService;

但是,每当我尝试启动服务时,我都会得到:

System error 5 has occurred.

Access is denied.

这是在net start MyService以管理员身份运行的 Visual Studio 命令提示符中运行命令之后出现的。

关于如何使它工作的任何帮助?谢谢。

4

3 回答 3

28

我会检查网络服务帐户是否具有执行权限。检查步骤:

  1. 在 Windows 资源管理器中,转到包含服务二进制文件的文件夹
  2. 右键单击文件夹 > 属性 > 安全选项卡 > 编辑按钮
  3. 添加>“网络服务”>确定
  4. 给它完全控制权(只是为了测试然后减少权限直到它工作)

截屏

于 2012-08-16T08:44:07.913 回答
1

Net Start MyService可能没有以升级的权限运行。您的命令需要(我相信)管理权限。

更新

不知道为什么,但是您对服务的特权很奇怪。默认情况下,服务的权限应如下所示:

D:(A;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)

ACE Type: ACCESS_ALLOWED_ACE_TYPE
Trustee: NT AUTHORITY\SYSTEM
AccessMask:
  ADS_RIGHT_DELETE
  ADS_RIGHT_READ_CONTROL
  ADS_RIGHT_WRITE_DAC
  ADS_RIGHT_WRITE_OWNER
  ADS_RIGHT_DS_CREATE_CHILD
  ADS_RIGHT_DS_DELETE_CHILD
  ADS_RIGHT_ACTRL_DS_LIST
  ADS_RIGHT_DS_SELF
  ADS_RIGHT_DS_READ_PROP
  ADS_RIGHT_DS_WRITE_PROP
  ADS_RIGHT_DS_DELETE_TREE
  ADS_RIGHT_DS_LIST_OBJECT
  ADS_RIGHT_DS_CONTROL_ACCESS

但是你的看起来像:

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)

ACE Type: ACCESS_ALLOWED_ACE_TYPE
Trustee: NT AUTHORITY\SYSTEM
AccessMask:
  ADS_RIGHT_READ_CONTROL
  ADS_RIGHT_DS_CREATE_CHILD
  ADS_RIGHT_ACTRL_DS_LIST
  ADS_RIGHT_DS_SELF
  ADS_RIGHT_DS_READ_PROP
  ADS_RIGHT_DS_WRITE_PROP
  ADS_RIGHT_DS_DELETE_TREE
  ADS_RIGHT_DS_LIST_OBJECT
  ADS_RIGHT_DS_CONTROL_ACCESS

我不确定这到底是怎么回事。尝试卸载并重新安装?

您可以下载 SddlParse (google it :) 来解析安全描述符定义语言

于 2012-08-15T22:14:23.107 回答
-1

“访问被拒绝”消息适用于尝试启动服务的用户,而不是运行服务的帐户。

您可以从以下位置启动服务:

  1. 服务控制面板小程序?
  2. 您自己启动的提升命令提示符(不是来自 Visual Studio)?
于 2012-08-15T23:29:48.000 回答