2011-04-12 105 views
1

所以这就是我想要实现的。我在注册表中为每个特定过程都有几个日志记录键。使用C#注册表创建对象#

我想作一个对象从这些程序开始,所以当我需要我可以访问值时,所以基本上他们都预装。

这里是我有迄今我的课:

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

很难告诉你想要什么。这里没有问题。 – 2011-04-12 20:22:49

+0

我想从Windows注册表中创建对象。 – Andy12 2011-04-12 20:25:29

+0

注册表中不包含对象 – 2011-04-12 20:28:32

回答

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,双,日期等)

1

退房的Microsoft.Win32命名空间,特别是类的RegistryKey。

你将需要手动连接到注册表(可能通过一个循环?)给你在哪里保存你的钥匙和实例类为您找到每个键的注册表项。

+0

我知道。我有几个关键locaitons,我想我的对象中propertys我想创建使用。 – Andy12 2011-04-12 20:31:02

+0

没有自动的过程,变成注册表项为对象。你将不得不打开你的根密钥,并通过从每个键有循环,创建类的实例和初始化属性。 – Efren 2011-04-12 20:34:25

0

这个link应该有帮助。而不是显示值,将它们设置在您的对象中。

0

由于@ 0A0D表示,注册表不存储对象。但是,它可以存储字符串。如果您序列对象JSON或XML字符串,并将其存储在注册表中,以后可以从这些相同的密钥加载的字符串值,然后反序列化串入的对象。

您可能要搜索MSDN有关序列化的更多信息。例如,DataContractSerializer文章将是一个很好的开始。