Windows 7 NSIS安装程序的文件副本不适用于Windows 7,但适用于Windows XP

Windows 7 NSIS安装程序的文件副本不适用于Windows 7,但适用于Windows XP,windows-7,installation,windows-xp,nsis,file-copying,Windows 7,Installation,Windows Xp,Nsis,File Copying,我正在使用NSIS安装程序的FileCopy将文件夹及其所有子文件从源复制到目标。这适用于XP,但不适用于Windows 7。当我在Windows7上运行安装程序时,甚至没有出现FileCopy对话框,只是跳过了它。 但在WindowsXP中,它正确地显示了“复制文件”对话框并成功。 有什么问题吗?请帮忙 !define FileCopy `!insertmacro FileCopy` !macro FileCopy FilePath TargetDir CreateDirectory `$

我正在使用NSIS安装程序的FileCopy将文件夹及其所有子文件从源复制到目标。这适用于XP,但不适用于Windows 7。当我在Windows7上运行安装程序时,甚至没有出现FileCopy对话框,只是跳过了它。 但在WindowsXP中,它正确地显示了“复制文件”对话框并成功。 有什么问题吗?请帮忙

!define FileCopy `!insertmacro FileCopy`
!macro FileCopy FilePath TargetDir
  CreateDirectory `${TargetDir}`
  CopyFiles `${FilePath}` `${TargetDir}`
!macroend

   ${FileCopy} 'C:\ACCBK\*.*' '$INSTDIR\ACCBK\'

要确保安装程序以管理员身份运行,请使用以下代码:

RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on)

!include LogicLib.nsh

Function .onInit
UserInfo::GetAccountType
pop $0
${If} $0 != "admin" ;Require admin rights on NT4+
    MessageBox mb_iconstop "Administrator rights required!"
    SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
    Quit
${EndIf}
FunctionEnd
如果这就是问题所在,那就意味着它实际上在XP上也被破坏了(任何版本的NT都是如此),你只是忘记了以非管理员身份进行测试


CopyFiles只调用SHFileOperation,但是XP和Vista+之间可能会有一些破坏性的更改,当然……

也许它需要管理员权限。您是否尝试使用“以管理员身份运行”选项启动它?如何启动?另外,如果我不想对用户进行验证,那么如何删除它?您是否尝试过使用UAC插件@科斯明·皮尔沃:怎么做?另外,如果我不想对用户进行验证,那么如何删除它?我的意思是,任何用户都可以运行安装程序,那么怎么办??请帮助编写代码,先生。我不想使用任何插件,我只希望filecopy在Windows 7和XP上都能工作,目前它在XP上工作,但在7上不工作,即使我是通过管理员登录的?@Anders:先生,我希望任何人都能运行安装程序,任何用户或管理员。还有,我在帖子中提到的代码,我以管理员身份在Windows 7上执行过,然后文件复制操作也失败了。对于任何运行安装程序的人,先生,我应该提到什么代码?请help@sqlchild:只有管理员才能写入$windir、$programfiles和HKLM@Anders:先生,我没有写信给这些文件夹吗?那么它应该可以工作了,但是为什么不在Windows7上复制文件呢