我正在Win 10上制作一个简单的NSIS安装程序,而函数int LA[] = {1,3,5,7,8};
int item = 10, k = 3, n = 5;
int i = 0, j = n;
n = n + 1;
while( j >= k) {
printf("j+1 =%d",j+1);
LA[j+1] = LA[j];
j = j - 1;
}
遇到了一些问题。 ReadRegStr
返回一个空字符串并设置一个错误标志,这意味着找不到该值。该值肯定存在(它是我自己制作的),并且是正确的REG_SZ类型。
即使使用其他 键,也会发生相同的行为:
Powershell可以毫无问题地找到值。
ReadRegStr
这是我正在使用的轻量级PS C:\Users\Admin\test> Get-ItemProperty -Path HKLM:\SOFTWARE\FooBar
(default) : fb
脚本
nsi
以上所有键均至少对每个用户/安装者具有读取权限。 还有什么可能导致这种情况?
答案 0 :(得分:1)
64位Windows具有two registry "views",而32位应用程序默认情况下会看到32位视图。您可以使用SetRegView
指令强制将32位NSIS安装程序用于64位视图:
!include x64.nsh
!include LogicLib.nsh
Section
${If} ${RunningX64}
SetRegView 64
ReadRegStr ... value on 64-bit systems
SetRegView LastUsed
${Else}
ReadRegStr ... value on 32-bit systems
${EndIf}
SectionEnd