无法设置用户来运行该服务

时间:2017-07-11 15:15:55

标签: java apache-commons procrun prunsrv

我使用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%

根据documentation,我试图运行命令

%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更改用户吗?

由于

1 个答案:

答案 0 :(得分:1)

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

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

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

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

这对我有用。我在Procrun documentation

中找到了这个
  

指定运行服务的帐户的名称。使用DomainName \ UserName形式的帐户名称。服务进程将以此用户身份登录。如果帐户属于内置域,则可以指定。\ UserName

亲切的问候