我可以使用copyfile();在 Windows XP 上将文件复制到 c:/windows/system32 的函数,但后来我在 Windows 7 上使用该函数,但无法复制它:o 文件不会出现在那里....
我在写入和读取寄存器时遇到了同样的问题,但通过声明 WOW key $0100 修复了它......
我认为问题出在 uac 但不确定..有人能给我解释一下吗:D?
最佳答案
这确实是因为UAC。它被称为File/Folder或Registry虚拟化。它是针对尚未遵守新 UAC 规则的旧应用程序(例如,除非您是管理员,否则不要在系统文件夹中写入)而完成的。
通过创建 list 文件,您可以关闭此虚拟化。请参阅here 。这可以是一个单独的文件,也可以嵌入到 exe 中。较新的 Delphi 版本已经生成包含此类 list 的可执行文件,并将 requestsExecutionLevel 设置为 asInvoker。这通常不允许在这些位置写入,除非用户专门以管理员身份运行您的程序。将其设置为 requireAdministrator 确实允许在这些位置进行写入,但也意味着用户必须确认他们想要以管理员身份运行您的程序。
关于Windows 7中Delphi复制文件到systemdir问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6491703/