Java Windows 8上的JWrapper EXE需要;以管理员身份运行…”;

Java Windows 8上的JWrapper EXE需要;以管理员身份运行…”;,java,windows-8,windows-firewall,Java,Windows 8,Windows Firewall,短版: 我们正在为Windows 8生成一个EXE,它在启动时执行一个内部BAT文件。目前,EXE/BAT功能要求用户右键单击并“以管理员身份运行…”。我们希望它只需双击即可工作。i、 e.当用户或程序调用时,没有交互 长版本: 我们正在使用的最新版本生成EXE。作为启动的一部分,EXE调用BAT文件。BAT文件启用防火墙规则。这些规则看起来很模糊: netsh advfirewall firewall add rule name=acmeCompanyName program=AcmeComp

短版:

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

长版本:

我们正在使用的最新版本生成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。Microsoft已被禁用。(UAC)已禁用。(我们知道存在一个问题,但regedit解决方案似乎太脆弱了)

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

<InstallType>CurrentUser</InstallType>
<WindowsElevation>RequireAdministrator</WindowsElevation>
CurrentUser
需求管理员
当我们双击EXE时,它会启动,但BAT文件无法写入防火墙规则。如果我们右键单击EXE,然后选择“以管理员身份运行…”,它就会工作

问题:


我们如何实现双击解决方案?

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

<WindowsElevation>RequireAdministrator</WindowsElevation>
<WindowsElevationUiAccess>true</WindowsElevationUiAccess>
<InstallType>AllUsers</InstallType>
RequireAdministrator
真的
诱惑者
编辑:

对于希望为CurrentUser(而不是AllUsers)安装的应用程序,此方法也适用:

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

您是否尝试过将此内容发布到?它们非常有用:我同意它们很有用(而且JWrapper是一个很棒的工具)。首先在这里发布,因为我可能需要悬赏。