- 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/
我只是想从 .NET 调用 kernel32 中的 GetPrivateProfileString 和 GetPrivateProfileSection,但遇到了一些我不明白的奇怪问题。 让我们从这个
Windows 的 GetPrivateProfileXXX 函数(用于处理 INI 文件)在处理缓冲区长度方面有一些奇怪的规则。 GetPrivateProfileString 的文档指出: If
我正在使用 GetPrivateProfileStringA 从 .ini 文件中读取一些内容。我有一些其他类,我将东西与字符串数组一起保存。我必须像这样使用它才能将正确的字符串放入 ControlA
我正在用 C++ 创建一个 dll。这是一个 Visual Studio 项目。 dll 从 ini 文件中读取一些数据。我决定使用 GetPrivateProfileString 函数。它几乎完全有
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我想用 GetPrivateProfileString 制作一个 INI 阅读器。我正在使用什么: public class Config { [DllImport("kernel32")]
我正在尝试使用 GetPrivateProfileString 从 ini 文件中读取我的程序的授权详细信息。我想进入 directory/Folder/File.ini) 但不知道该怎么做 我试过
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias _ "GetPrivateProfileStr
现在我想从 ini 中的变量中获取值并将它们吐出到 sendkey 函数中。所以目前这就是我在顶部定义它们的方式显然不正确,因为我在测试变量时得到了默认值。 const int KeyAtk = Ge
我正在修改现有的 C++ 应用程序并移出一些当前硬编码的值。 我正在用一个类来执行此操作,该类将“管理”整个事情并保持 map来自 INI 文件的值。 现在我必须使用 ::GetPrivateProf
我正在开发一个要在 Raspberry Pi 上运行的 UWP 应用程序。我需要读取存储在 .ini 文件中的数据 - 我知道 Microsoft 希望我使用 xml,但我必须使用 ini。 我已经成
我有一个程序,它从文件“.\abcd.ini”读取GetPrivateProfileString - 即它将在当前目录中查找ini 文件。如果找不到 ini 文件,则会在第三个参数中将默认值设置为 G
在 GetPrivateProfileString 中,lpReturnedString 返回 ini 文件特定部分的键中存在的字符串值。 我的问题是,我如何准确知道必须分配多少内存,而不是在调用此函
我需要一种方法来读取 StringBuilder 变量中 ini 文件的所有部分/键: [DllImport("kernel32.dll")] private static extern int Ge
运行我在 64 位 Vista 上编写的 c# 控制台应用程序。这是代码: class Class1 { static void Main(string[] args) {
我声明了以下代码: Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileSt
在 CPP Visual Studio 2010 中。我需要从 ini 文件中读取一些配置。下面的代码不起作用。谁能帮我修一下。 char * path = "C:\\NotBackedUp\\Wo
我是一名优秀的程序员,十分优秀!