2011-04-25 53 views
1

1.) 如何爲C#註冊表加載,編輯和保存二進制Hive文件從C#操作註冊表配置單元文件

我發現這個Win32 api。 http://msdn.microsoft.com/en-us/library/ee210770%28VS.85%29.aspx

這個傢伙共享代碼將二進制Hive文件的內容轉儲爲文本。 http://www.codeproject.com/KB/recipes/RegistryDumper.aspx

2.) 除了操縱蜂房文件,我還搜索加載配置單元使用C# (類似於負載上的文件許多配置單元和卸載配置單元命令文件到註冊表在運行時的方法在註冊表編輯器)

/感謝

回答

1

以下文章解釋瞭如何在不使用WinAPI(advapi32.dll)的情況下分析註冊表文件。在這種特殊情況下的傢伙是使用單聲道:

http://volatile-minds.blogspot.com/2011/01/analyzing-windows-nt-registry-without.html

using (FileStream fs = File.OpenRead (path)) { 
var data = new byte[checked((int)fs.Length)]; 
int i = 0; 
int read; 

using (var ms = new MemoryStream (checked((int)fs.Length))) { 

    while ((read = fs.Read (data, 0, data.Length)) > 0) { 
    ms.Write (data, 0, read); 
    i += read; 
    } 

    byte[] hive = ms.ToArray(); 
    char[] cList = new char[fs.Length]; 

    i = 0; 
    foreach (byte b in hive) 
    cList[i++] = (char)b; 

     string d = new string (cList); 


    int all = 0; 

    foreach (Match mx in lf.Matches (d)) { //you can change out the regex you want here. 
    byte[] bb = new byte[mx.Value.Length]; 
    char[] cb = new char[mx.Value.Length]; 

    for (int k = 0; k < mx.Value.Length; k++) { 
    bb[k] = (byte)mx.Value[k]; 
    cb[k] = (char)bb[k]; 

    } 

    all++; 

    //Console.WriteLine (new string (cb)); 
    } 

    Console.WriteLine (all.ToString()); 
    all = 0; 
} 
} 
+0

我其實寫了上面的代碼,那是我的博客。該代碼真的很糟糕,我不推薦使用它。我確實在Ruby中寫了一個[真正的脫機註冊表閱讀庫](https://github.com/brandonprry/ntreg-ruby),並且一個使用它的工具在Metasploit框架(tools/reg.rb)中。最終我也將在C#中實現這個庫,但不會很快。 – 2012-08-05 22:00:21

+2

@ user1577946:4年後。做了什麼? – 2016-08-05 12:26:09

-2

請參閱:https://github.com/brandonprry/volatile_reader

它讀取C#離線蕁麻疹用GTK界面。儘管沒有寫支持。

+1

所以......沒有寫作支持,它似乎並不是對這個問題的回答,因爲它明確指出*「編輯和保存」。 – 2012-11-05 19:34:21

+0

我沒有說這是答案。但我正在積極研究這一部分。 – 2012-12-23 19:09:48