【问题标题】:Accessing C# user settings from a C++ Application从 C++ 应用程序访问 C# 用户设置
【发布时间】:2011-03-31 06:08:55
【问题描述】:

我正在 Microsoft Visual Studio 2010 中编写一个 C# 程序,它将一些信息存储在本地用户设置中,如下所示:

Properties.Settings.Default.userActive.Add(connection.Active);  
Properties.Settings.Default.Save();

我还有一个 Visual C++ 应用程序,它想读取这些存储的用户设置。我的 Visual C++ 应用程序是否可以读取 C# 应用程序的用户设置?

同样,我将如何访问 C++ 中的本地用户设置目录?

【问题讨论】:

  • 你说的是普通的 C++ 还是可视化的 C++?

标签: c# .net c++ settings


【解决方案1】:

您可以通过 .NET COM 互操作性和 COM 可调用包装器使 c# 类 COM 可调用。

退房 http://blogs.msdn.com/b/deeptanshuv/archive/2005/06/26/432870.aspx

【讨论】:

  • 我查看了您的建议,但遇到了另一个障碍。即使我尝试从 C++ 调用 C# 函数,我也找不到从 C# 读取单独程序的用户设置的简单方法。似乎 Properties.Settings.Default 保存/读取了对调用程序来说非常独特的文件夹。至于可视化 C++ 实现,我的一位朋友建议使用类似以下内容的内容:char path[250]; ExpandEnvironmentStrings("%userprofile%",path,250);但是如何弄清楚我需要附加到该路径以使其成为正确的 user.config?
【解决方案2】:

似乎没有微软认可的方式来做我想做的事情。如果其他人遇到这种情况,我将简要解释我决定做什么。 Here was a helpful guide。我最终只是从 C# 填充一个 xml 文件并将其放在位于以下位置的用户 AppData 文件夹中:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

然后我使用我的 C++ 来定位它:

TCHAR myCharArray[MAX_PATH];
SHGetFolderPath(NULL,CSIDL_LOCAL_APPDATA,(HANDLE)-1,SHGFP_TYPE_DEFAULT, myCharArray);

然后我使用 C++ 解析 XML 文件并读取设置。这是一个比我想要的更加手动的过程,不幸的是留下了很多错误的空间。无论如何,谢谢大家,祝你好运!

【讨论】:

  • 另外请注意,如果您使用 std::cout 打印 myCharArray 并调试 SHGetFolderPath:TCHAR 有时使用 Unicode 编码而不是多字节字符集,在这种情况下您需要使用 std::wcout。浪费了我生命中的一个半小时,哈哈。
猜你喜欢
  • 1970-01-01
  • 2015-07-14
  • 2020-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
相关资源
最近更新 更多