【问题标题】:Can't set User to run the service无法设置用户运行服务
【发布时间】:2017-07-11 15:15:54
【问题描述】:

我正在使用 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 in

的属性
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<ServiceName>

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

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

有人可以告诉我如何使用 prunsrv 更改用户吗?

谢谢

【问题讨论】:

    标签: java apache-commons procrun prunsrv


    【解决方案1】:

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

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

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

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

    这对我有用。我在Procrun documentation找到了这个

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

    亲切的问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多