所以这就是我想要的。我在注册表中为每个特定进程都有几个日志记录键。
我希望在程序启动时从这些对象中创建一个对象,这样我就可以在需要时访问这些值,所以基本上它们都是预加载的。
以下是我到目前为止的课程:
class LoggingInfo
{
//field data
private String LogName;
private int DailyFile;
// Constructors.
public LoggingInfo() { }
public LoggingInfo(String LogName, int DailyFile)
{
this.LogName = LogName;
this.DailyFile = LogDailyFile;
}
}
那么如何从注册表中获取LoggingInfo对象的属性呢?在我的主程序中,我需要传递任何内容吗?
答案 0 :(得分:1)
查看Microsoft.Win32名称空间,特别是类RegistryKey。
您需要手动连接到注册表(可能是通过循环吗?)到注册表项,您要保存密钥并为您找到的每个密钥实例化您的课程。
答案 1 :(得分:0)
这link应该会有所帮助。不要显示值,而是将它们设置在对象中。
答案 2 :(得分:0)
注册表不是由POCO's组成的,所以你必须自己实现。
有一个项目Poco::Util::WinRegistry。值得一看。
答案 3 :(得分:0)
正如@ 0A0D所说,注册表不存储对象。但是,它可以存储字符串。如果序列化对象为JSON或XML字符串并将它们存储在注册表中,您可以稍后从这些相同的键加载字符串值,然后将字符串反序列化到对象中。 / p>
您可能需要搜索MSDN以获取有关序列化的更多信息。例如,DataContractSerializer文章将是一个很好的起点。
答案 4 :(得分:0)
你想要这样的东西:
private const string m_sKeyPathString = "XXX\\YYY";
private const string m_sKeyVal = "MY_VAL";
RegistryKey key = Registry.CurrentUser.OpenSubKey(m_sKeyPathString);
if(key == null)
key = Registry.CurrentUser.CreateSubKey(m_sKeyPathString);
if(key.GetValue(m_sKeyVal) != null)
string sMyString = (string)key.GetValue(m_sKeyVal);
然后你可以用字符串做任何你想做的事情(转换为int,double,date等)