gpt4 book ai didi

c++ - Windows 应用程序以非管理员身份运行时看到文件的旧版本而不是当前版本

转载 作者:行者123 更新时间:2023-11-30 04:27:27 27 4
gpt4 key购买 nike

我有一个用 Microsoft Visual Studio 2003 编译的 C++ 命令行程序,我在 Windows 7(64 位版本)下运行生成的 32 位可执行文件。大多数事情都能正常工作,除了一个莫名其妙的怪事。

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

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

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

一个可能的线索是,如果我从 Explorer 转到文本文件的 properties 并查看“Previous Versions”下的内容,会列出一个以前的版本,从昨天开始,它的内容与我的程序在尝试读取文件时看到的内容。

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

最佳答案

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

微软的ProcMon工具(或较旧的 FileMon)可以显示您的应用程序正在访问哪个文件。

关于c++ - Windows 应用程序以非管理员身份运行时看到文件的旧版本而不是当前版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10921930/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com