Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当以非管理员身份运行时,Windows应用程序会看到文件的旧版本,而不是当前版本 < >我有一个用微软Visual Studio 2003编译的C++命令行程序,我在Windows 7(64位版本)下运行了32位可执行文件。除了一个令人困惑的奇怪之处外,大多数事情都正常工作_C++_File_Windows 7 - Fatal编程技术网

当以非管理员身份运行时,Windows应用程序会看到文件的旧版本,而不是当前版本 < >我有一个用微软Visual Studio 2003编译的C++命令行程序,我在Windows 7(64位版本)下运行了32位可执行文件。除了一个令人困惑的奇怪之处外,大多数事情都正常工作

当以非管理员身份运行时,Windows应用程序会看到文件的旧版本,而不是当前版本 < >我有一个用微软Visual Studio 2003编译的C++命令行程序,我在Windows 7(64位版本)下运行了32位可执行文件。除了一个令人困惑的奇怪之处外,大多数事情都正常工作,c++,file,windows-7,C++,File,Windows 7,启动时,我的程序尝试使用和ifstream读取文本文件。如果我以管理员身份运行我的程序,或者打开管理员命令提示符,或者右键单击资源管理器并选择“以管理员身份运行”,则一切正常,我的程序读取文件的当前版本 相反,如果我在普通命令提示符下运行,或者在资源管理器中双击,我的程序会看到昨天的旧版本文本文件。即使我删除了该文件,我的程序仍然会愉快地打开该文件并读取旧内容 如果在非管理模式下对文件运行type或notepad,则会显示正确的最新版本,问题似乎仅限于我的程序。我已经尝试在没有任何更改的情况下,

启动时,我的程序尝试使用和ifstream读取文本文件。如果我以管理员身份运行我的程序,或者打开管理员命令提示符,或者右键单击资源管理器并选择“以管理员身份运行”,则一切正常,我的程序读取文件的当前版本

相反,如果我在普通命令提示符下运行,或者在资源管理器中双击,我的程序会看到昨天的旧版本文本文件。即使我删除了该文件,我的程序仍然会愉快地打开该文件并读取旧内容

如果在非管理模式下对文件运行
type
notepad
,则会显示正确的最新版本,问题似乎仅限于我的程序。我已经尝试在没有任何更改的情况下,将该文件的所有可能权限授予我的用户

一个可能的线索是,如果我从资源管理器转到文本文件的
properties
并在“Previous Versions”下查看,则会列出昨天的一个Previous version,它的内容与我的程序尝试读取文件时看到的内容相同


不知何故,我的程序在以非管理员身份运行时,似乎停留在文件系统的旧视图中,而看到的是以前的版本,我希望有人能向我解释为什么会发生这种情况,以及(希望)如何修复它。

如果您没有为输入文件使用绝对路径名,然后,您可能读取了错误的文件(删除文件后可以读取该文件这一事实证明了这一点)。换句话说,在您的系统中的某个地方有另一个旧文件的副本,这就是您的程序正在读取的内容


Microsoft的工具(或较旧的FileMon)可以显示应用程序正在访问的文件。

是否为输入文件使用绝对路径名?否,仅显示文件名(与可执行文件位于同一文件夹中)。现在我将尝试绝对路径我将尝试在您的计算机中搜索该文件,并查看它是否也在其他地方。我刚刚尝试了具有相同结果的Aboluste路径使用ProcMon(请参见下面答案中的链接),以查看您是否能发现任何奇怪的东西(将您的应用程序与
类型
)进行比较。谢谢,ProcMon提供了一条新线索,我的文件打开请求返回重新分析结果,然后我的应用程序在AppData/Local/VirtualStore下打开一个文件。尽管如此,我仍在试图找出原因,因为notepad,et都可以读取真实文件,现在我在谷歌上有了“VirtualStore”这个名字,我找到了答案。如果我将数据文件安装到应用程序中的\Program文件以外的其他位置,则问题似乎会消失。但仍然很奇怪,因为我的应用程序只读取这个文件,而且它只作为管理员写入,但希望这对我来说应该可以解决这个问题。