我有支持 Windows 7 的驱动程序。它附带一个安装程序。
如果您在 Windows 10 上运行该安装程序,它会给出错误,提示不兼容。如果您在兼容 Windows 7 的模式下运行并安装,它会安装。
我想在不更改兼容性设置的情况下在 Windows 10 中安装。有没有办法创建安装程序或 bat 程序来更改兼容性设置并在 Windows 10 上轻松安装?
答案1
为什么您要安装它而不手动更改兼容性设置?您要分发它吗?如果是这样,那可能侵犯了某人的版权。
您可以编写一些创建注册表项的软件来确保程序将在兼容模式下运行,或者您可以运行 2 个 DOS 命令,一个用于创建注册表值,另一个用于实际运行它。https://qtechbabble.wordpress.com/2016/08/23/run-application-in-compatibility-mode-from-command-line/
我了解到这些兼容性条目以直接的方式写入 Windows 注册表。它实际上也是用于存储应用程序级显示和权限级别设置的同一位置(稍后会详细介绍)。注册表项会有所不同,具体取决于设置是适用于单个用户还是适用于所有用户。
对于个人用户:HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
对于所有用户:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
请注意,如果将设置写入 HKLM(所有用户)位置,则除非用户是管理员,否则他们无法在文件属性 GUI 中更改受影响的设置。
对于每个具有自定义兼容性设置的项目,都会创建一个字符串。字符串的名称是文件的路径,数据特定于所需的兼容性设置:
每个应用程序可以应用三种类型的设置:兼容模式、显示设置和权限级别。修改注册表值以根据需要运行文件。如果要使用多个设置,请用一个空格分隔数据(如上图所示的 pskill.exe 示例:256COLOR WIN95)。
下表显示了我找到的数据值:
兼容模式:
描述 | 值数据 |
---|---|
Windows 8 | WIN8RTM |
Windows 7的 | WIN7RTM |
Windows Vista SP2 | VISTASP2 |
Windows Vista SP1 | VISTASP1 |
Windows Vista | 维斯塔特 |
Windows XP SP3 | 操作系统 |
Windows XP SP2 | 操作系统 |
Windows 98 | 操作系统 |
Windows 95 | WIN95 |
显示设置:
描述 | 值数据 |
---|---|
8 位 (256) 色彩模式 | 256色 |
16 位 (65536) 色彩模式 | 16位色彩 |
640 x 480 屏幕分辨率 | 640X480 |
在高 DPI 设置下禁用显示缩放 | HIGHDPIAWARE |
特权级别:
描述 | 值数据 |
---|---|
以管理员身份运行程序 | 运行管理员 |
因此,可以从命令行以兼容模式运行文件……
...但它需要运行两个命令:一个命令用于创建适当的注册表值,另一个命令用于在创建注册表值后运行该文件。
了解了这一点之后,很容易创建以下命令,调用 REG.EXE 来创建注册表值,强制我的 WorkstationInstaller.EXE 文件在 Windows 7 兼容模式下运行:
REG ADD "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /V %cd%\WorkstationInstaller.exe /T REG_SZ /D WIN7RTM /F
我在运行 WorkstationInstaller.EXE 之前将这个命令添加到批处理脚本中。由于这是针对 SCCM 应用程序的,因此我利用当前目录环境变量 %cd% 来确保它始终能够正确添加文件位置,无论 EXE 在 CCM 缓存中的什么位置。