Delphi将文件复制到Windows 7中的systemdir问题

1 delphi uac

我可以使用copyfile(); 函数将文件复制到Windows XP上的c:/ windows/system32,但后来我使用Windows 7上的功能我无法复制它:o文件不会来那里....

我在编写和阅读注册时遇到了同样的问题,但通过声明WOW键$ 0100修复了它...

我认为问题是uac但不确定..有人可以解释一下:D?

Lar*_*ens 6

这确实是因为UAC.它被称为文件/文件夹注册表虚拟化.它适用于尚未遵守新UAC规则的旧应用程序(例如,除非您是管理员,否则不写入系统文件夹).

通过创建清单文件,您可以关闭此虚拟化.看到这里.这可以是单独的文件或嵌入到exe中.较新的Delphi版本已生成包含此类清单的可执行文件,并已将requestedExecutionLevel设置为asInvoker.除非用户专门以管理员身份运行程序,否则通常不允许在这些位置进行写入.将其设置为requireAdministrator允许在这些位置写入,但也意味着用户必须确认他们想以管理员身份运行您的程序.


R-D*_*R-D 5

确实是UAC阻止您将文件复制到system32文件夹.你必须问自己为什么要在那里复制文件.普通应用程序永远不应该将文件复制到system32文件夹.

有时在安装期间您可能希望在那里复制dll,但即使这是遗留行为.如果您真的想要在那里复制文件,您应该在应用程序开始时请求Elevation.