windows-10 - 有没有办法使用 NSIS 在 Win10 中安装一个可以读取 C:\Windows 的应用程序?
问题描述
我们有一个拥有大量安装基础的应用程序。长话短说,在有限的时间内,一些新的 Win10 系统需要像 Win7 系统一样存储它们的数据——在 C:\windows 中(这是不可协商的,并且是临时的——我知道这是一种糟糕的形式,但它是临时解决方法)。
为了做到这一点,我假设我们需要让 NSIS 设置兼容模式,或者设置提升的用户权限。但我对其他选择持开放态度。
谢谢!
解决方案
Windows 7 和过去 25 年发布的所有其他 Windows 版本也是错误的。
虽然可以为所有用户授予对 %windir% 的写入权限,但这是一个巨大的安全问题,我不建议这样做。
您最好的选择是修改您的应用程序,以便它在其清单中请求 UAC 提升。如果应用程序还没有嵌入式清单(不请求 ComCtl32 v6 等),那么理论上您可以使用外部 .manifest 文件。
一个不太理想的解决方案是设置兼容性标志:
!include x64.nsh
${If} ${IsWow64}
SetRegView 64
${EndIf}
WriteRegStr HKLM "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$InstDir\MyApp.exe" "RUNASADMIN"
SetRegView Default
应用程序兼容性层是为客户提供的,而不是为程序提供的,但我想我们已经不再遵循微软的指导方针了。
推荐阅读
- react-native - 如何使用 React Native 在应用程序图标上显示消息数量?(适用于安卓和IOS)
- latex - 我无法打开样式文件 IEEEbib.bst
- javascript - 如何使用reduce计算数组中的项目?
- python - SWIG 将 Python 列表转换为 char ** 示例失败
- email - 当我的网站出现错误时,我想发送一封电子邮件,但我有一些错误
- maven - 如何获取/获取 Jenkins 管道中设置的环境变量到我们的 maven pom.xml
- javascript - 为什么 Tampermonkey 仍然可以识别以“window”为前缀的变量。在沙盒环境下不报错?
- angular - 为什么我的 ionic 程序没有显示列表?
- python-3.x - 运行 opencv 脚本时 RPI 4 冻结
- java - 当我尝试运行应用程序 jar 文件时,出现错误:无法找到或加载主类