在Windows Server上安装C#服务(拒绝访问)

时间:2013-03-11 09:59:55

标签: c# service

我创建了一个C#服务。现在我想在Windows Server 2008 R2上安装该服务。 我使用 InstallUtil 命令来安装该服务。我以管理员身份打开了命令提示符。

该服务应作为特定用户运行,因此我将该帐户设置为Service Installer上的用户。

当我运行命令时出现错误:

安装阶段发生异常: System.ComponentModel.Win32Exception: Access Denied

这是日志文件:

Installing assembly 'C:\Service\MyService.exe'.
Affected parameters are:
   logtoconsole = 
   logfile = C:\Service\MyService.InstallLog
   assemblypath = C:\Service\MyService.exe
Rolling back assembly 'C:\Service\MyService.exe'.
Affected parameters are:
   logtoconsole = 
   logfile = C:\Service\MyService.InstallLog
   assemblypath = C:\Service\MyService.exe
An exception occurred during the Rollback phase of the System.ServiceProcess.ServiceProcessInstaller installer.
System.NullReferenceException: Object reference not set to an instance of an object.
An exception occurred during the Rollback phase of the installation. This exception will be     ignored and the rollback will continue. However, the machine might not fully revert to its initial state after the rollback is complete.

以下是命令提示符上显示的内容:

Beginning the Install phase of the installation.
See the contents of the log file for the C:\Service\MyService.exe assembly's progress.
The file is located at C:\Service\MyService.InstallLog.
Installing assembly 'C:\Service\MyService.exe'.
Affected parameters are:
   logtoconsole =
   logfile = C:\Service\MyService.InstallLog
   assemblypath = C:\Service\MyService.exe

An exception occurred during the Install phase.
System.ComponentModel.Win32Exception: Access Denied
   at System.ServiceProcess.ServiceProcessInstaller.OpenSecurityPolicy()
   at System.ServiceProcess.ServiceProcessInstaller.Install(IDictionary stateSaver)
   at System.Configuration.Install.Installer.Install(IDictionary stateSaver)
   at System.Configuration.Install.Installer.Install(IDictionary stateSaver)
   at System.Configuration.Install.AssemblyInstaller.Install(IDictionary savedState)
   at System.Configuration.Install.Installer.Install(IDictionary stateSaver)
   at System.Configuration.Install.TransactedInstaller.Install(IDictionary savedState)

The Rollback phase of the installation is beginning.
See the contents of the log file for the C:\Service\MyService.exe assembly's progress.
The file is located at C:\Service\MyService.InstallLog.
Rolling back assembly 'C:\Service\MyService.exe'.
Affected parameters are:
   logtoconsole =
   logfile = C:\Service\MyService.InstallLog
   assemblypath = C:\Service\MyService.exe
An exception occurred during the Rollback phase of the System.ServiceProcess.Ser
viceProcessInstaller installer.
System.NullReferenceException: Object reference not set to an instance of an obj
ect.
An exception occurred during the Rollback phase of the installation. This exception will be ignored and the rollback will continue. However, the machine might not fully revert to its initial state after the rollback is complete.

The Rollback phase completed successfully.

The transacted install has completed.
The installation failed, and the rollback has been performed.

有人知道我需要做什么来安装服务吗?

3 个答案:

答案 0 :(得分:7)

我终于可以安装该服务了。我以一个名为server admin的角色登录到服务器。我的管理员将我的帐户添加到服务器的本地管理员组。在此之后我可以安装该服务。它接口就像服务器管理员帐户,我用来登录系统没有完整的管理员权限。

感谢您的帮助。

答案 1 :(得分:2)

您确实没有提供有关您的服务的详细信息,我无法直接评论您的帖子,但您可以尝试this link

此摘要是检查并确保您运行的是正确的32/64位installutil.exe,并验证您的合并模块是否导致问题。

或许更好地描述您的服务会有所帮助?与服务器相比,服务在本地计算机上安装正常吗?

答案 2 :(得分:0)

此问题归因于安全性,请在RUN AS ADMINISTRATOR中更好地打开命令提示符并安装服务,这可以肯定地解决您的问题