Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с реестром, считывание и запись 
:(
    Опции темы
Hidrag
Дата 29.9.2005, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



Проблема такая нужно считать в переменную данные из реестра (двоичный параметр) привести эту переменную к типу string, показать, изменить и записать новые данные.

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

Код

         private int k;
         ...

         // так мы считываем выводим изменяем и записываем числовые данные
    RegistryKey regKey = Registry.LocalMachine;
    regKey.OpenSubKey("\\SYSTEM\\dddd\\uuuu");
    k=(int)regKey.GetValue("zzzz",k);
    string s;
    s=System.String.Format("{0}",k);
    textBox2.Text=s;
    k=k+20;
    regKey.SetValue("zzzz",k);
        // а как то же самое провернуть с бинарным форматом....


Это сообщение отредактировал(а) Hidrag - 29.9.2005, 19:39


--------------------
user posted image
PM WWW ICQ   Вверх
nikf
Дата 29.9.2005, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 6.6.2005
Где: город-герой Жирно вск

Репутация: нет
Всего: 1



byte[]
PM MAIL   Вверх
Hidrag
Дата 30.9.2005, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



Не поддается реестр никак smile
В чем тут моя ошибка?
Код

          try
          {
            RegistryKey regKey = Registry.LocalMachine;
            regKey=regKey.CreateSubKey("\\SYSTEM\\CurrentControlSet\\Control");
          }
          catch(Exception e)
          {
            MessageBox.Show(e.Message,"Ошибка!");
          }



В документации сказано что метод CreateSubKey позволяет создать новый подпараметр или открыть существующий что я и пытаюсь сделать а у меня вылазит ошибка "Уазан недопустимый путь" ...почему недопустимый?


--------------------
user posted image
PM WWW ICQ   Вверх
nikf
Дата 30.9.2005, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 6.6.2005
Где: город-герой Жирно вск

Репутация: нет
Всего: 1



"SYSTEM\\CurrentControlSet\\Control" - а так допустимый?
PM MAIL   Вверх
Hidrag
Дата 30.9.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



А почему нет? в примере из книги так написанно, то есть через две касые черты, если пичать через одну SYSTEM\CurrentControlSet\Control компилятор ошибку выдает...


--------------------
user posted image
PM WWW ICQ   Вверх
Artiom
Дата 30.9.2005, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1031
Регистрация: 11.3.2003
Где: Минск\Баку

Репутация: нет
Всего: 17



Писать через 2 черты или с @
Две косые черты перед SYSTEM - лишние
пиши так
Цитата(nikf @ 30.9.2005, 14:12)
"SYSTEM\\CurrentControlSet\\Control"


или так
Код

string path = @"SYSTEM\CurrentControlSet\Control";
RegistryKey regKey = Registry.LocalMachine;    
regKey=regKey.CreateSubKey(path);



--------------------
Если тебя жизнь трахает, значит, ты ещё живой
PM MAIL ICQ   Вверх
Hidrag
Дата 30.9.2005, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



Огромное спасибо!!! smile

Заработало! smile Ошибка то глупая ))))


--------------------
user posted image
PM WWW ICQ   Вверх
Hidrag
Дата 8.10.2005, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



С одним разобрался с другим так и не получается...
Подскажите как программно записать в реестр?

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Prefetcher
"LastDiskLayoutTime"=hex:30,cb,3d,2b,34,ed,c0,01


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction
"FileTimeStamp"=hex(b):30,cb,3d,2b,34,ed,c0,01





--------------------
user posted image
PM WWW ICQ   Вверх
Hidrag
Дата 14.10.2005, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



Как считать и записать двоичный параметр hex? Нужно срочно! Помогите, кто знает...

Это сообщение отредактировал(а) Hidrag - 14.10.2005, 14:18


--------------------
user posted image
PM WWW ICQ   Вверх
mr.DUDA
Дата 14.10.2005, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Hidrag @ 14.10.2005, 14:18)
Как считать и записать двоичный параметр hex? Нужно срочно! Помогите, кто знает...

Ведь сказали уже: читать в массив byte[].


--------------------
user posted image
PM MAIL WWW   Вверх
Hidrag
Дата 18.10.2005, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



А пример можно? Понимаю достал, просто нужно а не получается, если считываю в массив тог там одни нули...

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction
"FileTimeStamp"=hex(b):30,cb,3d,2b,34,ed,c0,01

получается нужно создать массив из 8 лементов
Код

private byte[] num= new byte[8];


считываю так:

Код

num[]=(byte[])regKey.GetValue("FileTimeStamp",num[]);


что не так?



--------------------
user posted image
PM WWW ICQ   Вверх
Wanderer2019
Дата 18.10.2005, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 7
Всего: 17



вообщем не уверен поможет ли... но попробуй...
Код

static public object getKey(string name,string dir){
            RegistryKey regKey=null;
            Object result=null;
            try
            {
                regKey=Registry.LocalMachine.OpenSubKey(dir,true);//ключ должен находиться в HKEY_LOCAL_MACHINE. т.е. если прямо тут то ставишь просто ""
                result=regKey.GetValue(name);
            }
            catch(Exception e)
            {
                if(regKey==null) result=null;
                else MessageBox.Show("Application "+e.Source+" got an error"+e.StackTrace+". The error is: "+e.Message);                
            }
            finally
            {
                if(regKey!=null)
                    regKey.Close();
            }
            return result;
        }



используем:
Код

object myKey=getKey("test","");
byte[] myBytes=(byte[])myKey;

PM ICQ MSN   Вверх
Hidrag
Дата 26.10.2005, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



Так, ладно... тогда как записать в реестр эти значения?

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Prefetcher
"LastDiskLayoutTime"=hex(b):30,cb,3d,2b,34,ed,c0,01

нужна конкретная реализация... инфу уже обыскался перепробывал по всякому, не получается...

записать то так:
Код

RegistryKey key = Registry.LocalMachine;
string path3=@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Prefetcher";
key=key.CreateSubKey(path3);
key.SetValue("LastDiskLayoutTime"," /* А вот что писать тут???? */");


Это сообщение отредактировал(а) Hidrag - 26.10.2005, 12:07


--------------------
user posted image
PM WWW ICQ   Вверх
mr.DUDA
Дата 26.10.2005, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Вот это работает:
Код
using System;
using System.Security.Permissions;
using Microsoft.Win32;

[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum,
All = "HKEY_LOCAL_MACHINE")]

namespace ConsoleApplication1
{
    class Class1
    {
        static void Main()
        {
            RegistryKey key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Мой раздел реестра");
            key.SetValue("bla-bla-bla", new byte[] {1,2,3,4});
        }
    }
}



--------------------
user posted image
PM MAIL WWW   Вверх
Hidrag
Дата 26.10.2005, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



Работает!!! Большое спасибо! smile И откуда только вы все это знаете, mr.DUDA?!

А в чем разница???
Почему работает это?
Код

RegistryKey key = Registry.LocalMachine.СreateSubKey(@"SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Prefetcher");
key.SetValue("LastDiskLayoutTime",new byte[] {48,203,61,43,52,237,192,01});


но не работает это?
Код

RegistryKey key = Registry.LocalMachine;    
string path=@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Prefetcher";    
key=key.CreateSubKey(path);    
key.SetValue("LastDiskLayoutTime",new byte[] {48,203,61,43,52,237,192,01});


Проблема решена полностью, просто интересно, хочется разобраться, не оставляя белых пятен.

И (сейчас наверное в глаз получу) что делает эта строка?
Код

[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum,    
All = "HKEY_LOCAL_MACHINE")]

типа отключает защиту и разрешает доступ к реестру?


--------------------
user posted image
PM WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1429 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.