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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор типа параметра системного реестра, редактирование сис. реестра 
V
    Опции темы
Fedia
Дата 6.8.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

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



Задачка наверняка очень простая для знатоков C#, но я еще совсем новичок в этом вопросе, поэтому прошу помочь. Мне необходимо перебирать параметры сис. реестра и в зависимости от их значения производить определенные действия. Но для этого мне нужно знать тип параметра. Как бы мне организовать нечто на подобии вот такой проверки:
if (RegKey.GetType() = string)
{выполняем некие действия}?
Т.е. если параметр содержит строковое значение, то выполняем то-то
Код

      public void FindAndDelSubKey(string SubKey, string ValueName, string Value)
      {
            RegistryKey RegKey = Registry.CurrentUser;
            RegKey = RegKey.CreateSubKey(SubKey);
            int i, j;
            for (i = 0; i < RegKey.ValueCount; i++)
            {
                RegKey.GetType(); ///<-здесь необходимо определить тип параметра
            
                string s = (String)RegKey.GetValue(RegKey.GetValueNames()[i]);



--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
Exception
Дата 6.8.2006, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Код
if (RegKey.GetType() is string) ...

PM   Вверх
Fedia
Дата 6.8.2006, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

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



Цитата(Exception @  6.8.2006,  14:25 Найти цитируемый пост)
код C#    
1:    if (RegKey.GetType() is string) ...


Это было бы правильно, если бы строковый параметр в реестре был типа string. Но он скорее всего какого-то другого строкового типа, т.к. отладчик выдает мне на это строчку следующий комментарий: "The given expression is never of the provided 'string' type".
Я сейчас посмотрел реестр, в нем, возможно, создавать 5-ть типов параметров:
- строковый параметр;
- двоичный параметр;
- параметр DWord;
- мультистроковый параметр;
- расширяемый строковый параметр.
Мне нужно организовать проверку типа параметра с именем RegKey.GetValueNames()[i] из моего примера и в зависимости от его типа, поместить значение параметра в переменную данного типа. Вот с этим прошу помочь разобраться.


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
mr.DUDA
Дата 8.8.2006, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



RegKey.GetType всегда будет возвращать typeof(RegistryKey)  smile 

Проверять нужно то, что получено от RegKey.GetValue(...), и проверять так:
Код
if (RegKey.GetValue(RegKey.GetValueNames()[i]) is string)


Добавлено @ 10:52 
З.Ы. рациональнее заранее получить все значения RegKey.GetValueNames() во временный массив и работать с ним, а не вызывать GetValueNames каждый проход цикла


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

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



Цитата(mr.DUDA @  8.8.2006,  10:49 Найти цитируемый пост)
if (RegKey.GetValue(RegKey.GetValueNames()[i]) is string)

Кажется то, что надо. Спасибо !

Цитата(mr.DUDA @  8.8.2006,  10:49 Найти цитируемый пост)
З.Ы. рациональнее заранее получить все значения RegKey.GetValueNames() во временный массив и работать с ним, а не вызывать GetValueNames каждый проход цикла

Советом воспользовался smile


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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