【问题标题】:Create a Windows Service from within Java从 Java 中创建 Windows 服务
【发布时间】:2011-03-10 21:03:30
【问题描述】:

我有一个 Java 程序,我需要从该 Java 程序中创建一个 Windows 服务。我想基本运行命令行

sc create \"" + serviceName + "\" binPath= \"" + batFile + "\" start= auto

但是,当我在 Java 中运行此进程时,我得到一个错误

[SC] OpenSCManager FAILED 5:

Access is denied.

如果用户是管理员,这个命令可以正常工作,但是我的这个 Java 程序的用户将不是管理员。在没有管理员权限的用户的情况下,如何在 Java 中(或通过运行外部程序)创建 Windows 服务?

编辑:显然这是不可能的。除了通过 Windows 服务之外,Windows 中还有其他方法可以在机器启动时执行程序吗?

【问题讨论】:

  • 显然这是不可能的。除了通过 Windows 服务之外,Windows 中还有其他方法可以在机器启动时执行程序吗? 是的,您可以将程序添加到:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,您需要一些 .reg 文件,或多或少您是完毕。 (忘记了:regedit /S 不会提示,即静默)
  • @bestsss:在没有管理员权限的情况下,你究竟是如何修改windows注册表的?
  • @bestsss:不管用户是否登录,这些进程也会运行吗?
  • 不,当然;您需要管理员/高级用户来处理这些内容,每个用户都可以修改自己的注册表,HKEY_CURRENT_USER... 任何人都可以修改,这就是重点。但是每个用户都有一个实例

标签: java windows-services


【解决方案1】:

在没有管理员权限的情况下无法在 Windows 中创建服务。

【讨论】:

    【解决方案2】:

    没有管理员权限是不可能创建 Windows 服务的。同样,您将无法通过系统配置实用程序的启动选项卡 (msconfig) 启动任何可执行文件。如果您无法获得管理员权限,是否可以在您帐户的启动文件夹中创建一个快捷方式?

    如果这是您需要的东西,那么这应该可以解决问题。如果您需要多个用户帐户,则您需要成为管理员。

    【讨论】:

      【解决方案3】:

      你不能。添加服务需要管理员权限。

      【讨论】:

      • 这不是我想听到的。
      • 之所以这样是因为如果windows允许非管理员用户创建服务会带来很大的安全隐患。但是,如果您可以告诉问题您创建 Service 的目的是什么,那么也许有人可以建议该问题的替代解决方案。
      • 我有一个程序需要在机器启动时启动,还有其他方法吗?
      猜你喜欢
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多