在远程服务器上安装Windows服务

时间:2016-08-03 12:12:44

标签: c# windows service

是否可以远程在服务器上安装Windows服务?我试图用sc指令做到这一点但是给了我错误:

sc \\remote_computer_IP create svc binPath="C:\Users\User\Documents\Visual Studio 2015\Projects\svc\svc\bin\Release\svc.exe" start= auto obj= "DOMAIN\usr" password= pass
  

[SC] OpenSCManager失败5:

     

访问被拒绝。

2 个答案:

答案 0 :(得分:2)

是的,可以使用PowerShell执行此操作,Microsoft建议使用PowerShell进行部署和安装。

[SC] OpenSCManager FAILED 5 表示您没有在提升的命令提示符下运行该命令(即如果您具有管理员访问权限)。

这是一个链接,向您展示如何使用PowerShell将Windows服务部署到远程计算机。

http://www.ben-morris.com/deploying-a-windows-service-remotely-with-powershell/

答案 1 :(得分:1)

您可以使用net use建立连接,而不是使用PS远程处理:

net use "\\remote_computer_IP\c$" "[PASSWORD]" /USER:"[USERNAME]" /persistent:no
sc \\remote_computer_IP create svc binPath="C:\Users\User\Documents\Visual Studio 2015\Projects\svc\svc\bin\Release\svc.exe" start= auto obj= "DOMAIN\usr" password= pass
net use "\\$ComputerName\c$" /USER:"$Username" /delete

这假设您的目标计算机的服务位于c:\ users \ user。

SC.exe不会将svc.exe复制到目标计算机。在我的用例中,我正在将一个Windows服务部署到一个Web服务器场,我的目标是使用MSBuild将我的服务包含在我现有的Web部署中。我的解决方案是:

  • 使用MSBuild / Web Deploy部署Web组件(就像VS Publish一样)
  • 以相同方式部署服务
    • 我创建了一个Web项目来定位一个专门用于该服务的网站,只是为了利用我的其余MSBuild项目文件。
    • 因此,我在c:\ inetpub \ MyService \ bin
    • 中完成了我的服务

然后我打电话给:

sc create \\remote_computer_IP "MyService" binpath="C:\inetpub\MyService\bin\MyService.exe"

Powershell非常棒,但在处理VPN隧道和远程服务器场时,PS远程处理会很麻烦。