c# – 为什么我不能通过pinvoke让GetPrivateProfileString工作?
作者:互联网
运行我在64位Vista上编写的c#控制台应用程序.这是代码:
class Class1
{
static void Main(string[] args)
{
Debug.Assert(File.Exists(@"c:\test.ini"));
StringBuilder sb = new StringBuilder(500);
uint res = GetPrivateProfileString("AppName", "KeyName", "", sb, sb.Capacity, @"c:\test.ini");
Console.WriteLine(sb.ToString());
}
[DllImport("kernel32.dll")]
static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
}
我相信我会得到一个很大的“DUH!”作为答案,但我不明白为什么这不起作用.除了Debug.Assert之外,此代码是从this page处的c#示例中删除的
解决方法:
这一天也一直在破坏我的排骨.我想我找到了一个解决方法,我真的不想处理它:在.ini文件的第一个节头之前插入一个空行.现在运行您的应用程序,看看您是否开始看到您期望的值.
考虑到这个错误显然已存在多年,我很惊讶MS现在还没有解决它.但是,几年前.ini文件应该已经消失了.这当然很有趣,因为MS使用很多地方.ini文件(例如desktop.ini).但我认为MS知道这个错误,因为我注意到我的desktop.ini文件包含一个前导空行.嗯…
标签:c,64bit,pinvoke,windows-vista 来源: https://codeday.me/bug/20190527/1159841.html