Visual c++ 无法通过Inno安装程序以管理员身份运行

Visual c++ 无法通过Inno安装程序以管理员身份运行,visual-c++,inno-setup,privilege-elevation,Visual C++,Inno Setup,Privilege Elevation,我通过Inno setup创建了一个安装程序。安装程序安装的MyPro.exe应在Win7中以管理员身份运行。以下是脚本的重要部分。但是,MyPro.exe仍然无法以管理员身份运行,并且无法在\系统中写入其配置文件。你能告诉我哪个是错的吗 [Setup] PrivilegesRequired=admin [Icons] Name: {group}\MyPro; Filename: {app}\MyPro.exe; Flags: [Registry] Root: "HKLM"; Subkey:

我通过Inno setup创建了一个安装程序。安装程序安装的MyPro.exe应在Win7中以管理员身份运行。以下是脚本的重要部分。但是,MyPro.exe仍然无法以管理员身份运行,并且无法在\系统中写入其配置文件。你能告诉我哪个是错的吗

[Setup]
PrivilegesRequired=admin

[Icons]
Name: {group}\MyPro; Filename: {app}\MyPro.exe; Flags:

[Registry]
Root: "HKLM"; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\"; ValueType: String; ValueName: "{app}\MyPro.exe"; ValueData: "RUNASADMIN"; Flags: uninsdeletekeyifempty uninsdeletevalue; MinVersion: 0,6.1

Root: "HKCU"; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: String; ValueName: "{app}\MyPro.exe"; ValueData: "RUNASADMIN"; Flags: uninsdeletevalue; MinVersion: 0,6.1

这不是它的工作原理。如果这是您的目标,您需要将要以管理员身份运行的应用程序添加到应用程序清单中。请参阅,例如,了解原因和可能的解决方案。但是,如果它不是您的应用程序,您无法添加清单,并且您必须使用兼容标志,并且您拥有64位系统,那么您可以尝试更改第一个注册表项,并将其拆分为64位和32位系统<代码>根目录:“HKLM64”;子项:“软件\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\”;ValueType:字符串;ValueName:“{app}\MyPro.exe”;ValueData:“RUNASADMIN”;标志:UnisDeleteKeyIfEmpty UnisDeleteValue;MinVersion:0,6.1;检查:64位系统的IsWin64和“HKLM”;[…]最小版本:0,6.1;检查:不适用于32位系统的IsWin64。谢谢你,TLama。MyPro是一个MFC项目,很容易在VC中添加清单作为建议链接。我将首先尝试这种方法。还要注意,作为管理员运行的应用程序应该是例外,而不是规则。虽然这样做有一些正当的理由,但默认情况下,您应该假设如果没有管理员权限,某些东西无法工作,那么您就是做错了。谢谢TLama。它起作用了。