【问题标题】:Deleting file from C:/ProgramData in Windows 7 does not really delete the file?在 Windows 7 中从 C:/ProgramData 中删除文件并不会真正删除文件吗?
【发布时间】:2011-10-07 15:01:54
【问题描述】:

我的申请有点问题。应用程序在首次运行时将 SQLite 数据库存储在 C:\ProgramData\ProgramName\ 文件夹中。我想测试如果我删除数据库,应用程序可以创建一个新数据库。启动时,我使用 SysUtils 中的 FileExists(filename) 函数检查文件是否存在。但它总是返回 True,即使我删除了 ProgramName 文件夹。

如果我使用另一个文件夹(例如 %AppData%),那么一切正常。

我在这里缺少什么?为什么 FileExists 函数总是返回 True?

【问题讨论】:

  • 你的程序有写权限吗?否则你可能会碰到重定向垫片。
  • @CodeInChaos 什么是重定向 shim?
  • 好的,在 %AppData%\Local\VirtualStore\ProgramData\ProgramName 文件夹中也找到了我的虚拟化数据库文件
  • @Downvoter / 是 Windows 上的有效路径分隔符
  • @evilone 通过在应用清单中包含 requestedExecutionLevel 条目来关闭虚拟化。

标签: delphi windows-7 filesystems delphi-xe


【解决方案1】:

标准用户(包括激活 UAC 时的管理员)没有对该位置的删除权限。

如果您需要标准用户能够删除文件,则需要找到不同的位置来存储文件。

【讨论】:

  • 正确的位置在哪里,所有用户都可以访问该文件?
  • @evilone 你希望所有用户共享一个文件实例吗?
  • 是的,我希望所有用户都可以访问该数据库文件
  • 我想我会把它当成一个文档,并将它定位在CSIDL_COMMON_DOCUMENTS下的文件夹中
  • CSIDL_LOCAL_APPDATA 是用户特定的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 2013-04-29
  • 2017-01-06
  • 2012-05-05
  • 1970-01-01
  • 2013-08-10
相关资源
最近更新 更多