我使用InnoSetup(v5.5.9)为我的应用程序创建一个安装程序。在inno-installer-script中,我使用以下语句使应用程序以admin-privileges开始:
Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers; \
ValueType: string; ValueName: {app}\{#MyAppExeName}; ValueData: "RUNASADMIN"; \
Flags: createvalueifdoesntexist uninsdeletekey; MinVersion: 6.2;
这适用于从Win7到Win10(所有x64)的所有测试机器。但是有些机器运行Win8.1(也是x64),应用程序似乎忽略了这个键。
我可以将错误追踪到以下内容:
右键单击application.exe并检查"以管理员身份运行"在兼容性下标志,它在注册表中设置上面提到的密钥,并在HKEY_USERS
下设置相同的密钥,这是它实际从中读取密钥的位置。手动或使用InnoSetup在HKEY_LOCAL_MACHINE
中设置密钥时,不会将其转到HKEY_USERS
。
有谁知道为什么会这样?
谢谢!