Topshelf 将用户名和密码传递给配置

Topshelf passing username and password to the configuration

我正在努力解决的一件事是使用用户名和密码注册服务。

我可以将用户名和密码硬编码到 RunAs 方法并注册服务,但显然不实用。

如果我

myservice.exe install start -username:Domain\username -password:itsAsecret

myservice.exe install start -username "Domain\username" -password "itsAsecret"

服务在本地系统下注册并启动运行。

如何将用户名和密码传递给:

configure.RunAs(username, password)

方法?

为了解决这个问题,我自己解析了命令行 然后我可以:

if (commandlineParameters.ContainsKey("username") && commandlineParameters.ContainsKey("password"))
    configure.RunAs(commandlineParameters["username"], commandlineParameters["password"]); 
else
    configure.RunAsLocalSystem();

但我觉得这应该可行:

 configure.ApplyCommandLine(string.Join(" ", args));

或者干脆

 configure.ApplyCommandLine();

但是当我这样做时,服务被注册为本地系统

似乎问题出在安装的命令 "start" 上。

因此,要安装和启动服务,需要两个单独的命令。

myservice.exe install -username:Domain\username -password:itsAsecret
myservice.exe start

这意味着我可以摆脱我添加的解析代码并简单地

configure.ApplyCommandLine();