- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个程序,它从文件“.\abcd.ini”读取GetPrivateProfileString
- 即它将在当前目录中查找ini 文件。如果找不到 ini 文件,则会在第三个参数中将默认值设置为 GetPrivateProfileString
。
我有一个安装程序,它将程序安装到 c:\program files (x86)\abcd\client
目录。
最初,安装程序还在同一目录中安装了一个 abcd.ini 文件,其中包含特定的配置文件字符串键/值对。之后,我更改了安装程序以不安装任何 ini 文件。
但是,程序继续从我提供的旧 ini 文件中获取值,即使该目录中不存在该值。
在进行系统范围的搜索后,我在c:\Users\myusername\AppData\Local\VirtualStore\Program Files (x86)\abcd\Client
中找到了 abcd.ini 的副本
一旦我删除了这个,程序就可以正常工作(就像没有ini文件一样)。
谷歌搜索似乎使用了虚拟存储,因为 myuser 没有 c:\program files (x86) 的完全权限。但是,程序本身不会写入 ini 文件,而只会从中读取。
这实际上是应该的吗?为什么 ini 文件被复制到 AppData,如果没有本地副本,为什么程序要从那里读取?
我使用的是 Windows 10 64 位。
最佳答案
诊断结果是 EXE 程序执行 not contain a manifest声明自己与 UAC 兼容。对于仍然使用 GetPrivateProfileString() 的应用程序来说,这并不罕见。
Is this actually how it's supposed to be?
是的,这是现代版本的 Windows(主要版本 >= 6、Vista 及更高版本)处理假定用户始终具有管理员权限的旧程序的方式。将文件访问重定向到 VirtualStore 目录可确保缺少对 Program Files 目录的访问权限不会造成问题。
it only reads from it
操作系统没有时间机器来猜测您是否可能写入文件并在上一个 session 中这样做。因此它必须首先检查 VirtualStore 目录。找到该 .ini 文件。
同样重要的是,不要假设是您的程序在该目录中获取了 .ini 文件。它可以通过另一个古老的程序来完成,例如文本编辑器。或者您的程序的先前版本。或者您使用的安装程序。
关于c - GetPrivateProfileString 和 AppData VirtualStore 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45434775/
我的应用程序将日志文件存储在一个位置,根据管理员设置,该位置可以重定向到 VirtualStore 中的文件夹。例如,它们有时会变成: 日志文件位于: C:\Users\-my username-\A
我希望我的程序在尝试在 C:\驱动器的根目录等 protected 位置创建文件时抛出错误(例如:FILE* FileHandle = fopen("\\file.txt",一))。相反,该文件会在
自 Win Vista 发布以来,Microsoft 为以 32 位进程运行的遗留应用程序引入了文件虚拟化。作为 Microsoft 用户帐户控制 (UAC) 的一部分发布,任何试图写入任何被认为受操
我正在使用 C# 和 .net 2.0 我将程序数据保存在以下文件中:C:\ProgramData\MyProgramName\fileName.xml 安装并运行我的应用程序一次后,我将其卸载(在卸
我有一个程序,它从文件“.\abcd.ini”读取GetPrivateProfileString - 即它将在当前目录中查找ini 文件。如果找不到 ini 文件,则会在第三个参数中将默认值设置为 G
当我的程序第一次安装时,它会在用户的 AppData 目录中放置一个文件,然后程序会定期写入该文件。问题是在 Vista 中,写入的不是用户 AppData 目录中的文件,而是“VirtualStor
我正在使用 C# 和 .net 3.5 我将我的程序数据保存在一个文件中:C:\Program Data\MyProgramName\fileName.xml 在安装并运行我的应用程序一次后,我卸载了
我的应用程序正在生成缩略图和一个 sqlite 数据库。 在制作了 inno 安装程序并首次安装应用程序后,我发现我的文件不是在程序目录中创建的,而是在名为 VirtualStore 的目录下创建的。
我在 Windows 10 PC 上有一个 c# 应用程序。我想阅读安装文件夹 (C:\Program Files (x86)\xxx) 中的设置文件,但除非用户具有管理员访问权限,否则无法编辑。问题
我的一般问题是如何解决“由于依赖项不会消失,无论我清理和重新编译多少次,我的 BPL 都不会加载”。 更新 您可能认为您有一个干净的重新编译系统,但由于 Windows 的逆向奇迹及其文件系统虚拟化错
我最近更新了我的 Visual Basic 6.0应用程序,现在包含一个 exe.manifest 文件以防止 UAC虚拟化。应用此更新后,一些用户无法找到他们的数据文件(Access MDB 文件)
我是一名优秀的程序员,十分优秀!