1

我正在使用 prunsrv 将 jar 文件作为 Windows 服务运行。

我需要将运行服务的用户从 LocalSystem 更改为机器用户,但我似乎无法使其工作。

这是我必须创建服务的 bash 脚本:

%PRUNSRV% //IS//%SERVICENAME% --Startup auto --StartClass <start_class_name> --StopClass <stop_class_name>
%PRUNSRV% //US//%SERVICENAME% --DisplayName "%DISPLAYNAME%" --Description "%DESCRIPTION%"
%PRUNSRV% //US//%SERVICENAME% --StartMode jvm --StopMode jvm --Jvm %JVM_DLL%
%PRUNSRV% //US//%SERVICENAME% --StartMethod start --StopMethod stop
%PRUNSRV% //US//%SERVICENAME% --Classpath "%APP_CLASSPATH%" --JvmMs 128 --JvmMx 256
%PRUNSRV% //US//%SERVICENAME% --JvmOptions %JAVA_OPTS% %LOG_OPTS%

根据文档,我尝试运行命令

%PRUNSRV% //US//%SERVICENAME% --User <my_user> --Password <password>

%PRUNSRV% //US//%SERVICENAME% --ServiceUser <my_user> --ServicePassword <password>

但没有效果。

如果我输入了错误密码的用户,我会收到一条消息说

帐户名无效或不存在,或指定帐户名的密码无效。

但是当用户和密码正确时我没有任何反馈,当我打开 Windows 服务时,我可以看到我的服务已安装并正在运行,但始终为 LocalSystem。

我注意到,当我在服务属性中更改用户时,它会更改一个名为ObjectName的属性

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<ServiceName>

当我使用 --User 和 --Password 运行 prunsrv 时,它会在其中添加一个名为 user 的属性

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\ProcRun 2.0\<ServiceName>

有人可以提示我如何使用 prunsrv 更改用户吗?

谢谢

4

1 回答 1

2

您需要在用户名之前添加域:

%PRUNSRV% //US//%SERVICENAME% --ServiceUser <domain>\<my_user> --ServicePassword <password>

如果您想将本地用户设置为 ServiceUser 您可以尝试这样

%PRUNSRV% //US//%SERVICENAME% --ServiceUser .\<my_user> --ServicePassword <password>

这对我有用。我在Procrun 文档中找到了这个

指定服务应在其下运行的帐户的名称。使用 DomainName\UserName 形式的帐户名。服务进程将以该用户身份登录。如果账号属于内置域,可以指定.\UserName

亲切的问候

于 2017-07-26T14:10:40.137 回答