C# 使用给定用户名在远程计算机上安装windows服务

C# 使用给定用户名在远程计算机上安装windows服务,c#,.net,msbuild,windows-services,C#,.net,Msbuild,Windows Services,在远程计算机上安装以C#(标准方式)编写的windows服务的最佳方式是什么?在远程计算机上,我需要提供它应该运行的用户名和密码 作为集成测试的一部分,我将从MSBuild运行它 编辑:我没有msi,也不想创建msi。从Powershell调用的WMI调用Installutil是一种方法。您可以使用该命令 sc.exe\\remotecomputer create newservice binpath=C:\Windows\System32\Newserv.exe start=auto obj=

在远程计算机上安装以C#(标准方式)编写的windows服务的最佳方式是什么?在远程计算机上,我需要提供它应该运行的用户名和密码

作为集成测试的一部分,我将从MSBuild运行它


编辑:我没有msi,也不想创建msi。

从Powershell调用的WMI调用Installutil是一种方法。

您可以使用该命令

sc.exe\\remotecomputer create newservice binpath=C:\Windows\System32\Newserv.exe start=auto obj=DOMAIN\username password=pwd

(注意等号后面的空格很重要)

在注册表和服务数据库中创建服务条目。
语法:
sc创建[service name][binPath=]。。。
创建选项:
注意:选项名称包括等号。
类型=
(默认值=自己的)
开始=
(默认值=需求)
错误=
(默认值=正常值)
binPath=
组=
标签=
依赖=
obj=
(默认值=本地系统)
显示名称=
密码=
我们过去常常在远程机器上做任何事情。
此时,我看到naother解决方案被调用,但我自己还没有尝试过。

可能值得您查看我编写的一个实用程序,它允许您在本地或远程计算机上安装/卸载/启动/停止windows服务。如果您有需要添加的功能,请告诉我(评论/github问题或PM,我很乐意为您效劳)


正如@Raj More所建议的,它使用从.NET调用的WMI。

看起来很有希望,但我必须为此付费吗?它包含在Windows中,可能在资源工具包中,启动命令提示符并键入sc以查看是否安装了它。请注意,如果从powershell运行它,则它是sc.exe而不是sc。sc是powershell中设置内容的别名。在传递带有特殊字符的复杂密码时要小心一点,因为即使在密码周围加上双引号也救不了你,出于好奇,它与SC有何不同?
Creates a service entry in the registry and Service Database.
SYNTAX: 
sc create [service name] [binPath= ] <option1> <option2>...
CREATE OPTIONS:
NOTE: The option name includes the equal sign.
 type= <own|share|interact|kernel|filesys|rec>
       (default = own)
 start= <boot|system|auto|demand|disabled>
       (default = demand)
 error= <normal|severe|critical|ignore>
       (default = normal)
 binPath= <BinaryPathName>
 group= <LoadOrderGroup>
 tag= <yes|no>
 depend= <Dependencies(separated by / (forward slash))>
 obj= <AccountName|ObjectName>
       (default = LocalSystem)
 DisplayName= <display name>
 password= <password>