Форум: "WinAPI";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];
ВнизЗапись в реестр. Найти похожие ветки
← →
Serd_hhc (2002-03-17 13:47) [0]Уважаемые мастера,
(ещё раз спосибо VuDZ"у)
Как мне сделать запись в реестре, не используя "REGISTRY" ?
Запись вот сюды:
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
Sdf = "bla-bla-bla"
С примером пожалуйста.
Заранее спасибо!!
← →
Иван Шихалев (2002-03-17 14:03) [1]А давай без примера? Просто почитаешь справку по
RegCreateKey
,RegSetValueEx
и так далее...
← →
Serd_hhc (2002-03-17 14:07) [2]Иван Шихалев,
Ты сабж (этот) хорошо читал. Тут же написано :
Не используя REGISTRY
← →
VuDZ (2002-03-17 14:08) [3]ну это просто празник какой-то... :>
PHKEY pK = new HKEY;
if (RegOpenKey(HKEY_LOCAL_MACHINE,
"Software\\Microsoft\\Windows\\CurrentVersion\\Run",
pK) == ERROR_SUCCESS)
if (RegSetValueEx(*pK, "sdf",0, REG_SZ, "bla-bla-bla", 13) == ERROR_SUCCESS)
printf("all right :>\n");
RegCloseKey(*pK);
delete pK;
разберёшся?
← →
VuDZ (2002-03-17 14:09) [4]
> REGISTRY
пр......... не увидел...
а ты, типа, хочешь писать прямо в файлы, содержащие реестр? :>
← →
Иван Шихалев (2002-03-17 14:11) [5]Крут. Адназначна.
Тогда уж мелочиться не надо - писать не в файлы, а с физическими секторами диска работать...
← →
Serd_hhc (2002-03-17 14:12) [6]Ну Windows же как-то обращается к реестру....
← →
VuDZ (2002-03-17 14:13) [7]все обращения идут через эти ф-ии. Или ты думаешь, что кто0тобудет по 30-50 раз дублировать их содержание?
← →
Serd_hhc (2002-03-17 14:17) [8]Э-э-э-э-э-э-э........????
Ну и как мне быть.
Мне нужно уменьшить размер программы до минимума (пока 20кб.)
Мне осталось только Запись в реестр добавить. А может лучше куда-нибудь в другое место (кроме Win.ini) ? И если модно, то куда ?
← →
Serd_hhc (2002-03-17 14:19) [9]Т.е. нужен автозапуск.
← →
Иван Шихалев (2002-03-17 14:23) [10]Если использовать всякую хрень вместо вызова WinAPI, то не уменьшишь, а увеличишь размер программы.
← →
VuDZ (2002-03-17 14:25) [11]слушай, вставь экспорт из kernel32.dll или GetProcAddress(), что тебе ближе, и не мучейся...
и сожми UPX трою.
есть ещё один метод, который я использовал в своё время, но не расскажу.
подсказка - это связано с именами файлов
← →
Serd_hhc (2002-03-17 14:26) [12]Куда, кроме просто Автозапуск в Пуск-Программы-Автозагрузка и файл win.ini можно добавить что-либо для автозапуска?
← →
Serd_hhc (2002-03-17 14:30) [13]Как сделать експорт с помощью kernel32.dll ?
← →
Иван Шихалев (2002-03-17 14:32) [14]to Serg_hhc
Если нужно минимизировать размер, то в реестр будет самое то. Добавление ярлыка в меню или запись в win.ini ничуть не сэкономит место.
Кстати, если 20К - это слишком много, то наверное стоит переходить на другое средство разработки - для Delphi это весьма маленький размер. У меня что-либо более-менее серьезное только в 40К умещалось.
to VuDZ
И чем явное прописывание экспорта будет отличаться от uses Windows в плане размера?
← →
Serd_hhc (2002-03-17 14:36) [15]uses Windows у меня есть, но для записи в реестр нужно REGISTRY использовать, но это + 40~50 КБ - уже плохо.
← →
Иван Шихалев (2002-03-17 14:38) [16]Не нужно. Те функции, которые я привел - в модуле Windows. И сами по себе добавят 10-20 байт.
← →
Serd_hhc (2002-03-17 14:43) [17]А где в спраке про эти функции написано, я что-то не нащёл, може примерчик покажешь на чтение/запись ? Пожалуйста.....
← →
Иван Шихалев (2002-03-17 14:50) [18]Справка по WinAPI. "Registry Functions". А найти просто: пишешь в редакторе Delphi "RegCreateKey", ставишь на него текстовый курсор и жмешь F1.
Примерчик мне искать или писать в лом. Примерно так:
RegCreateKey (bla-bla-bla, Key);
RegSetValueEx (Key, bla-bla-bla, Value);
RegCloseKey (Key);
Ну, там еще хорошо бы проверять результат функций на ошибку...
← →
Serd_hhc (2002-03-17 14:54) [19]А как читать значения? Ну.. вдруг там такие уже есть?
← →
Иван Шихалев (2002-03-17 14:56) [20]
RegQueryValueEx
, естественно.
← →
Serd_hhc (2002-03-17 15:00) [21]А как делать записи формата string ?
← →
Serd_hhc (2002-03-17 15:00) [22]А как делать записи формата string, а не Cardinal?
← →
Serd_hhc (2002-03-17 15:13) [23]
Key:=HKEY_LOCAL_MACHINE;
RegCreateKey (Key,PChar("\Software\Microsoft\Windows\CurrentVersion\Run\Cache32"),Key);
RegSetValueEx (Key, PChar(ParamStr(0)), 1,1,nil,1);
RegCloseKey (Key);
Не записывает что-то...
← →
ZZ (2002-03-17 17:19) [24]Serd_hhc
А что за раздел такой странный \Software\Microsoft\Windows\CurrentVersion\Run\ Cache32??
У меня такого нет :-( И думаю винда из него запускать не будет.
ЗЫ. RegCloseKey (Key); ?????
← →
Cobalt (2002-03-18 22:02) [25]Уважаемый Serd_hhc (17.03.02 15:13)
Да не торопитесь вы так.
RegSetValueEx(hKey: HKEY;// Ключ (уже открытый, или HKEY_CLASSES_ROOT и т.п.)
lpValueName: PChar;// Имя параметра
Reserved: DWORD;// = 0
dwType: DWORD; //напр. REG_SZ
lpData: Pointer; //если REG_SZ, то PChar(ParamStr(0)), т.е. собственно данные
cbData: DWORD//размер данных, т.е. Length(ParamStr(0))
): Longint;//если вернёт не 0, то смотри
ShowMessage("Ошибка записи в реестр,"#13#10+SysErrorMessage(GetLastError));
По поводу размера - если 20 кб для тебя много, то переходи на С, там можно дойти до 9-10 кб.
Он хоть и требует RunTime библиотеку, но она, как правило, есть на любом компе с Win98+Explorer.
Вообще, С по сравнению с Паскалём, более ( намного) управляемый язык. Взять хотя бы директивы препроцессора - мощное ср-во отладки, при помощи кот-го один мой знакомый узнавал, в какой строке какого файла произошла ошибка (при помощи 1 или 2-х строк директив)
← →
VuDZ (2002-03-19 01:59) [26]да уж, а приведение типов это вообще песня.
ну про препроцессор и перегружаемые операторы, типа new & delete вообще помолчим.
Кстати, на счёт размера - простые утилиты, даже с GUI можно уместить в 10-15 кило, так что думайте-с...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.007 c