gpt4 book ai didi

java - Windows 8 上的 JWrapper EXE 需要 "Run as Administrator..."

转载 作者:行者123 更新时间:2023-11-30 09:11:13 26 4
gpt4 key购买 nike

简短版:

我们正在为 Windows 8 生成一个 EXE,它在启动时执行一个内部 BAT 文件。目前,EXE/BAT 功能需要用户右键单击并“以管理员身份运行...”。我们希望它只需双击即可工作。即在被用户或程序调用时没有交互。

长版:

我们使用的是最新版本的JWrapper生成一个EXE。作为启动的一部分,EXE 调用 BAT 文件。 BAT 文件启用防火墙规则。规则看起来很模糊:

netsh advfirewall firewall add rule name=acmeCompanyName program=AcmeCompany.exe Action=Allow Dir=In protocol=6 Profile=Any

这一切都适用于 Win7。我们正在使用具有管理员权限的帐户在 Windows 8 上测试 EXE。微软SmartScreen被禁用。 User Account Control (UAC) 被禁用。 (我们知道 registry issue with UAC,但 regedit 解决方案似乎太脆弱了)。

在 JWrapper 配置 XML 中,我们有以下内容:

<InstallType>CurrentUser</InstallType>
<WindowsElevation>RequireAdministrator</WindowsElevation>

当我们双击EXE时,它启动了,但是BAT文件写入防火墙规则失败。如果我们右键单击 EXE,然后选择“以管理员身份运行...”,它就可以运行。

问题:

如何实现双击解决方案?

最佳答案

我们在 JWrapper 支持的帮助下解决了这个问题。我们的解决方案是在 JWrapper 配置 XML 中使用以下值:

<WindowsElevation>RequireAdministrator</WindowsElevation>
<WindowsElevationUiAccess>true</WindowsElevationUiAccess>
<InstallType>AllUsers</InstallType>

编辑:

对于想要为 CurrentUser(而不是 AllUsers)安装的应用程序,这种方法也适用:

  • 创建一个直接从 Java 调用“netsh ...”的新虚拟应用程序(例如 InstallFirewallRules)。无需运行 BAT 文件。
  • 创建一个 JWrapperPostInstallApp。此应用应使用 JWSystem.forkVirtualApp()elevateToAdmin = true
  • 调用 InstallFirewallRules

关于java - Windows 8 上的 JWrapper EXE 需要 "Run as Administrator...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22206063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com