c++ - 在 Windows 中修改文件夹时通知我的应用程序?

标签 c++ windows qt directory

我希望我的应用程序创建的文件夹的所有权只属于我的应用程序。 这是因为我将应用程序的数据链接到文件夹路径。 所以这两种解决方案中的任何一种都适合我:

  1. 不允许任何人修改我的应用程序创建的文件夹。 只有我的应用程序可以删除/重命名该文件夹。修改它 通过 Windows 资源管理器应该需要管理员权限。
  2. 如果上述解决方案不可行,至少应将更改通知我的应用程序,以便更新我的应用程序的链接。

问题是在Windows中是否可以做到这一点? 我觉得语言没有发挥作用,但如果需要,我仍在使用 C++ 中的 Qt 来开发我的应用程序。

编辑:现在有两种情况被通知:

一个。当我的应用程序正在运行并且文件夹被修改时。

当我的应用程序未运行且文件夹被修改时(如果 Windows 维护文件夹更改的日志文件,这可能会实现。我的应用程序可以读取此日志文件并了解文件夹中的更改)。

其实我是想专门问case b的,现在看了答案感觉case b可能通知不到。

最佳答案

Windows 中的安全性是基于帐户的,而不是基于应用程序的。文件夹不是“由您的应用程序创建的”;它是由运行您的应用程序的用户创建的。

至于被通知,保持开放句柄即可。这将防止文件夹在您运行时被更改。显然,当您不运行时,您甚至无法收到通知。

[编辑] 当您的应用未运行时,您需要 NTFS change journals .

关于c++ - 在 Windows 中修改文件夹时通知我的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28126731/

相关文章:

c++ - 套接字的有效性

android - 如何使用 Android.bp 文件构建(Soong 构建系统)

qt - 我如何知道哪个 QNetworkReply 属于异步设计中的 QNetworkRequest?

C++ Qt GUI 更新

qt - Qt-发射时隙而不是信号

C++ winAPI 基础 - 通过窗口切换

c++ - 通过在堆栈上传递 std::array 进行 API 调用是否有优势

c++ - 保证复制省略的行为是否取决于用户定义的复制构造函数的存在?

windows - 如何通过chrome_proxy.exe打开具有特定URL的chrome应用程序?

node.js - 如何在 Windows 7 上加密 "npm install"