Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> еще реестр 
:(
    Опции темы
Include
Дата 7.8.2005, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Видел тут тему про реестр там была ф-ия удаления всего ключа, а вот ф-ия удаления только одного параметра
Код

RegDeleteValue(hkey, name);
//где hkey - имя ключа
//name - имя параметра


и вопрос как отредактировать значение по умолчанию?
создал раздел и вписал в значение по умолчанию путь до проги, например для создания псевдонима для проги. пробывал писать имя параметра "(По умолчанию)" без кавычек, он зоздает параметр (второй) с таким именем и пишет в него, и истинный По умолчанию оставляет без изменения...
PM MAIL   Вверх
Fixin
Дата 7.8.2005, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Это из истории Вин16.... Теперь так делать не стоит. Делай отдельный ключ и пиши туда.
PM MAIL ICQ   Вверх
Include
Дата 7.8.2005, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вот еще столкнулся с такой проблемой. надо изменить значение типа DWORD если просто в него писать например значение "1" то пишет (при просморте в реестре) то что значение неправильного формата или че то наподобие. как правильно писать в парметр типа DWORD smile я писал как в строковый только тип параметра указал REG_MULTI_SZ, так же пробывал и REG_DWORD... всеравно правильно не пишет smile
PM MAIL   Вверх
Fixin
Дата 7.8.2005, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Вот, разгребай. Помню, что не все работало... но для тех целей подходило.
Код
#ifndef REGEDITH
#define REGEDITH
#include <windows.h>

long GetErr(long res)
{
    if (!res) return res;
    char* lpMsgBuf;
    FormatMessage( 
        FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
        NULL,
        res,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR) &lpMsgBuf,
        0,
        NULL);
    MessageBox( NULL, lpMsgBuf, "Error", MB_OK|MB_ICONINFORMATION );
    LocalFree( lpMsgBuf );
    return res;
}

long MRegCreateKey(HKEY hk, char* path, char* name = NULL, DWORD type = REG_SZ, LPBYTE pdata = NULL, DWORD size = 0)
{
    long res;
    HKEY hkey;
    if (!path)
        return ERROR_INVALID_DATA;
    path[strlen(path)] = 0;
    if (name)
        name[strlen(name)] = 0;
    res = RegCreateKey(hk, path, &hkey);
    if (res)
        return res;
    res = RegSetValueEx(hkey, name, 0, type, pdata, size);
    if (res)
    {
        RegCloseKey(hkey);
        return res;
    }
    return RegCloseKey(hkey);
}

long MRegKeySet(HKEY hk, char* path, char* name, DWORD type, LPBYTE pdata, DWORD size)
{
    HKEY hkey;
    long res;
    res = RegOpenKey(hk, path, &hkey);
    if (res)
        return res;
    res = RegSetValueEx(hkey, name, 0, type, pdata, size);
    if (res)
    {
        RegCloseKey(hkey);
        return res;
    }
    return RegCloseKey(hkey);
}

long MRegKeyGet(HKEY hk, char* path, char* name, LPBYTE pdata)
{
    HKEY hkey;
    long res;
    DWORD sz;
    res = RegOpenKey(hk, path, &hkey);
    if (res)
        return res;
    res = RegQueryValueEx(hkey, name, NULL, NULL, pdata, &sz);
    if (res)
    {
        RegCloseKey(hkey);
        return res;
    }
    return RegCloseKey(hkey);
}

long MRegKeyDel(HKEY hk, LPTSTR path)
{
    HKEY hkey;
    long res;
    res = RegOpenKey(hk, path, &hkey);
    if (res)
        return res;
    res = RegDeleteKey(hk, path);
    if (res)
    {
        RegCloseKey(hkey);
        return res;
    }
    return RegCloseKey(hkey);
}

#endif

//MRegCreateKey(HKEY_CURRENT_USER, path, name, REG_SZ, (LPBYTE)p, strlen(p));
//MRegKeySet(HKEY_CURRENT_USER, path, name, REG_SZ, (LPBYTE)p, strlen(p));
//MRegKeyGet(HKEY_CURRENT_USER, path, name, (LPBYTE)p);
//MRegKeyDel(HKEY_CURRENT_USER, path);


Это сообщение отредактировал(а) Fixin - 9.8.2005, 17:38
PM MAIL ICQ   Вверх
JackYF
Дата 8.8.2005, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Попробуй в Name записать '@', то есть только символ "собаки". Возможно поможет.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Include
Дата 8.8.2005, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Fixin
посмотрю, пасибо.

Цитата
Попробуй в Name записать '@', то есть только символ "собаки". Возможно поможет.

пробывал он просто создает значение с именем "@" а по умолчанию оставляет без изменения.

Цитата
Это из истории Вин16.... Теперь так делать не стоит. Делай отдельный ключ и пиши туда.

ну устарело оно не везьде. просто надо было написать прогу знакомому, одной из ф-ий которой была бы добавление псевдонима для проги (жмешь выполнить набираешь например notepad, или др, и откраваеться блокнот, или др прога - это и есть псевдоним) но для этого надо изменять значение по умолчанию
PM MAIL   Вверх
Include
Дата 8.8.2005, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



в FAQ'е нашел статью "Самый простой способ работы с реестром" расположенной по адресу http://vingrad.ru/CPP-FAQ-002403
там написанно
Цитата
Реализация: качаем архив, присоединённый к теме, распаковываем, подключаем файл registry.h ...


а архива там нет. у кого-нибудь он есть
ОЧЕНЬ НАДО smile
PM MAIL   Вверх
codelord
Дата 9.8.2005, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



Ты в чем работаешь?.
Если в Билдере, то там все элементарно.
подключаешь Registry.hpp
а там уже все просто как две копейки.


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
Include
Дата 9.8.2005, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



нет работаю в Визуал Студии версии 7.1
а если с билдера переташить Registry.hpp он будет работать с студии smile

Это сообщение отредактировал(а) Include - 9.8.2005, 00:31
PM MAIL   Вверх
codelord
Дата 9.8.2005, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



99.999% что не будет smile


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
Include
Дата 9.8.2005, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Fixin
то ли я че то не понял, я так понял в исходнике просто работа с реестром.
мне нужно конкрето вот что:
прога создает в ключе параметр типа DWORD (сам параметр в реестре этого типа, он может иметь значение в 10-чном или 16-чном виде) и пишет туда например "1"...
у меня проблема с записью он пихает туда единицу как символ, при открытии реестра там напротив параметра выводит (параметр задан не верно) (или что-то в этом роде). при открытии параметра там что-то вроде этого:

0000| 31 00 00 00 | 1

сейчас не могу точно сказать
как это исправить?


codelord
но 00,0001% всетаки есть smile smile smile
PM MAIL   Вверх
Fixin
Дата 9.8.2005, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Вот пример (я еще хедр изменил)
Код
#include <windows.h>
#include <conio.h>
#include "regedit.h"

void main()
{
    char path[] = "Software\\FixSoft";
    char name[] = "Param";
    DWORD p = 123456;
    if (GetErr(MRegCreateKey(HKEY_CURRENT_USER, path, name, REG_DWORD, (LPBYTE)&p, sizeof(p))))
    {
        getch();
        return;
    }
    lstrcpy(name, "Param2");
    p = 654321;
    if (GetErr(MRegKeySet(HKEY_CURRENT_USER, path, name, REG_DWORD, (LPBYTE)&p, sizeof(p))))
    {
        getch();
        return;
    }
    putch('!');
    getch();
}

Добавлено @ 17:39
Цитата
он пихает туда единицу как символ
Тык это указывать надо...
PM MAIL ICQ   Вверх
Include
Дата 10.8.2005, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
DWORD p = 123456;

блин как я раньше до этого не додумался smile , ладно попробую
PM MAIL   Вверх
sevalt
Дата 21.5.2006, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Исходника так и не появилось я так понял... А жаль... Тоже нужен. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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