我想通过命令行安装我的服务并指定加密密码,例如
MyService.exe install -servicename "MyService" -username "MyPC\MyServiceUser" -password "0D689361D6D7DC4E"
我试图修改构造函数中的密码参数
public class MyService: ServiceControl
{
public static int Main(string[] args)
{
DecodePasswords(args);
var host = HostFactory.New(x =>
{
x.Service<MyService>(hostSettings => new MyService(hostSettings));
});
return OkStatuses.Contains(exitCode) ? 0 : (int)exitCode;
}
private static bool IsInstalling(string[] args)
{
return (args.Length > 2) && (args[0].ToUpper() == "INSTALL");
}
private static void DecodePasswords(string[] args)
{
if (IsInstalling(args))
{
var encryptedPassword = string.Empty;
for (int i = 1; i < args.Length; i++)
{
var arg = args[i].Trim().ToUpper();
if (arg == "-PASSWORD" && ((i + 1 < args.Length)))
{
encryptedPassword = args[i + 1];
try
{
args[i + 1] = DecodePassword(encryptedPassword);
Console.WriteLine(args[i + 1]); //TODO TEMP
}
catch
{
//ignore
break;
}
break;
}
}
}
}
}
我检查了参数并解码了密码并且它们是正确的,但是当我启动该服务时会发生以下错误:
由于以下错误,MyService服务无法启动: 由于登录失败,服务未启动。
MyService服务无法使用当前的。\ MyServiceUser登录 由于以下错误而配置的密码:用户名或 密码不正确。
我已尝试 BeforeInstall 但 HostSettings 但包含 ServiceName 等但不包含密码。