【发布时间】:2012-05-10 10:21:35
【问题描述】:
如果可能,我的 Qt/C++/Windows 程序需要能够在不调用 UAC 的情况下删除一些文件。
所以,我正在检查文件是否可以在没有 UAC 的情况下写入,令人惊讶的是(在 Linux 上不是这种情况),以下行:
if (QFileInfo(targetPath + "/" + applicationFileName).isWritable()
&& QFileInfo(targetPath + "/").isWritable()) {
在没有 UAC 验证的情况下运行时返回 true,但是.. 它仍然失败,并且 Process Monitor 声称:
Date & Time: 5/9/2012 9:09:16 AM
Event Class: File System
Operation: CreateFile
Result: ACCESS DENIED
Path: C:\Program Files (x86)\MyApp\MyApp.exe
TID: 4540
Duration: 0.0000278
Desired Access: Delete
Disposition: Open
Options: Non-Directory File, Open Reparse Point
Attributes: n/a
ShareMode: Read, Write, Delete
AllocationSize: n/a
当以管理员身份调用时,它可以完美运行..
有什么想法吗?
【问题讨论】:
-
其他人也有类似的问题。看起来 isWritable 在 Windows 上无法正常工作。 stackoverflow.com/questions/10143207/…
-
好吧,在我的情况下,它不应该返回 true :(
标签: windows qt filesystems