Ave*_*oes 8 windows delphi windows-vista windows-7
我有一个用Delphi 2006编写的应用程序在Windows XP中运行良好.我使用Inno Setup打包应用程序,使用Program Files作为默认文件夹.一些用户迁移到Windows Vista和Windows 7.这里的问题是应用程序在其安装文件夹中创建了一些文件.这在XP中有效但在Windows Vista中用户遇到了创建文件的问题(它们没有出现等等).在调查用户的报告后,我发现KB 927387:"Windows Vista或Windows 7中的常见文件和注册表虚拟化问题".
使用管理员权限运行应用程序只是解决了问题,但这是(我认为)一个糟糕的解决方法.我想知道是否有任何指令或技巧使应用程序与Vista和7兼容,因为更多用户将很快迁移到这些操作系统.
Rem*_*eau 13
您需要重新编写应用程序以将其文件存储在适当的位置,即使在XP中,尤其是在Vista之后,尤其是在启用了UAC的情况下.随着Microsoft不断锁定并使用每个新操作系统版本强制执行其安全模型,这一点变得越来越重要.MSDN上记录了如何正确管理与应用程序和用户相关的文件的规则,例如:"Microsoft Windows 2000 for Desktop Applications的应用程序规范,第4章:数据和设置管理"和"Microsoft Windows 2000的应用程序规范"桌面应用程序附录A:最佳实践"(是的,它们已经过时,但仍然非常相关).查看SHGetSpecialFolderLocation(),SHGetFolderPath(),SHGetKnownFolderPath()和其他相关函数来帮助您.
Cra*_*ntz 12
对于Vista/Win7,您的应用无法将文件放在程序文件/程序的子文件夹中,除非UAC已关闭或应用程序正在升级运行.请注意,"提升"并不一定意味着"以管理员身份登录".非管理员用户可以提升,而管理员不一定会提升.
如果应用程序确实尝试写入Program Files但未升级,则操作系统将阻止应用程序或"虚拟化"写入(将文件放在其他位置),具体取决于UAC的配置方式.这两个人都没有帮助应用程序成功实现它的目标.
所以它需要把它们放在其他地方.哪里取决于文件创建的原因,你没有告诉我们.您可以阅读本文以了解这些选项.请注意,除了用户的AppData和漫游文件夹之外,还有一个"所有用户"(共享)配置文件.
您应该查看本文和截屏视频,从Delphi的角度深入讨论UAC.
| 归档时间: |
|
| 查看次数: |
3061 次 |
| 最近记录: |