以非管理员身份在 Windows 上的 C 中检查上次文件修改时间

Checking last file modified time in C on Windows as a non-admin

本文关键字:检查 文件 时间 修改 管理员 身份 上的 Windows      更新时间:2023-10-16

我正在编写一个 C/C++ 应用程序,我需要比较两个文件的上次修改时间,一个在安装目录中(即由系统拥有,具有系统/管理员的 wrx 权限,没有其他人),另一个在用户可写空间中。 我尝试使用 C 函数 stat(文件名,&st) 来检查上次修改时间,但当程序以管理员身份运行时,它只在安装目录中找到了文件的正确时间。 我的理解是,stat 需要在目录中执行权限才能运行。

那么,在 C/C++ 中,非管理员如何确定安装目录中文件的上次修改时间?

事实证明,stat 实际上是在工作,但它实际上是在查看安装目录中的文件,而是在查看

C:\Users\\AppData\Local\VirtualStore\

这是一个较旧的文件。 当程序以管理员身份运行时,它会在实际目录中查找。 我能够通过删除虚拟商店中的文件来解决我的问题。

另一种解决方法是启动系统进程以在命令行运行 stat。 我能够以这种方式直接使用 stat 访问文件,而在源代码中使用 stat 导致 Windows 重定向到该文件的 VirtualStore 版本。