Управление файлами реестра Hive из C # - PullRequest
1 голос
/ 25 апреля 2011

1). Как загрузить, изменить и сохранить двоичные файлы 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). Помимо манипулирования файлами Hive, я также ищу способ загрузки файла Hive в реестр во время выполнения, используя C # (аналогично командам «Загрузить куст» и «Выгрузить куст» для файла многие в regedit)

/ Спасибо

Ответы [ 3 ]

1 голос
/ 02 февраля 2012

В статье ниже объясняется, как анализировать файл реестра без использования WinAPI (advapi32.dll). В данном конкретном случае парень использует Mono:

http://volatile -minds.blogspot.com / 2011/01 / анализирующие-окна-нт-регистратура-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;
 }
}
1 голос
/ 25 апреля 2011

Вы смотрели на классы Registry и RegistryKey в Microsoft.Win32?

http://msdn.microsoft.com/en-us/library/microsoft.win32.aspx

Похоже, вам может потребоваться создать собственное представление для чтения файла куста и либо поставить его в очередь, либо немедленно внести соответствующие изменения в реестр. Точно так же вам нужно будет записать свой собственный конвертер обратно на диск.

0 голосов
/ 05 ноября 2012

см. https://github.com/brandonprry/volatile_reader

Он читает офлайны в C # с интерфейсом GTK. Пока не поддерживается запись.

...