在Windows上以C语言检查上次文件修改时间为非管理员

时间:2015-03-12 14:37:15

标签: c++ c windows permissions stat

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

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

1 个答案:

答案 0 :(得分:0)

事实证明,stat实际上正在运行,但它没有查看安装目录中的文件,而是在实际查看文件

C:\用户\\应用程序数据\本地\ VirtualStore \

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

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