powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не записываются данные в реестр, если скопировать exe
25 сообщений из 31, страница 1 из 2
Не записываются данные в реестр, если скопировать exe
    #39778994
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток!
Раньше пользовался ini файлом, но решил хранить настройки в реестре.
Всё работает и сохраняет нормально, только если запускать из самой delphi или из папки куда скомпилился exe.
Если скопировать exe на рабочий стол, то настройки не считываются и не сохраняются.
В чем проблема?
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39778997
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в правах небось. А точней в их отсутствии.
Небось без запроса повышеных привелегий в HKLM пишешь?

И это.. брось бяку. Не надо писать настройки в реестр.

Разве что самые минимальные.
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39778999
L1G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatНе надо писать настройки в реестр.а куда?
если у приложения есть штатная процедура удаления, то она не должна оставить мусора нигде.
(если он таки остался - чем мусор в реестре страшнее мусора в файловой системе? труднее обнаружить и удалить вручную? вряд ли.)
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779005
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В любой ос есть так называемый local storage для приложений. Вот туда и писать. Например:
TPath.GetCachePath или TPath.GetHomePath
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779006
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L1GrgreatНе надо писать настройки в реестр.а куда?
если у приложения есть штатная процедура удаления, то она не должна оставить мусора нигде.
(если он таки остался - чем мусор в реестре страшнее мусора в файловой системе? труднее обнаружить и удалить вручную? вряд ли.)Что можно - на сервер, что нельзя - локально в каталоге с ПО.

Так меньше мусора в системе остается. И портабельность не ломается.

Я уж не говорю о том что реестр - весьма тормозная вещь.
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779007
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В реестр стоит писать только вещи вроде информации пути где установлено ПО.
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779010
L1G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite,
а почему туда, а не в реестр??

rgreatлокально в каталоге с ПО.вот это - вряд ли (может прав не хватить)
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779017
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L1Gа куда?
Да ерунду люди говорят, и аргументов не будет; конечно же - реестр нажо использовать, он для того и создавался. Мы даже тестировали специально, заливая в реестр туеву хучу хлама - на быстродействии заметно не сказалось, разве что сами файлы реестра, естественно, пухнут.

Для всего программного комплекса - в
HKEY_LOCAL_MACHINE\SOFTWARE\Имя_программного_комплекса

Для настроек данного юзера:
HKEY_CURRENT_USER\Software\Имя_программного_комплекса
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779021
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L1Gвот это - вряд ли (может прав не хватить)Достаточно не ставить ПО в Program Files.
Это очень плохое место. Я вот лично его очень не люблю. ;)
Но это уже субъективно.

Хотя если сильно хочется - можно при инсталяции дать права на запись в файл настроек.
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779022
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл ЭраДа ерунду люди говорят, и аргументов не будет; конечно же - реестр нажо использовать, он для того и создавался. Мы даже тестировали специально, заливая в реестр туеву хучу хлама - на быстродействии заметно не сказалось, разве что сами файлы реестра, естественно, пухнут.Это все конечно субъективно но реестр у меня ассоциируется с общим холодильником в коммуналке.

Та еще помойка.

И когда к примеру FAR отказался от хранения данных в реестре и перешел на хранение в локальном файле я был счастлив.
Больше не надо было страдать дурью экспрортируя и импортируя настройки из реестра в reg файлы и обратно.

Скопировал каталог на другую машину и радуешься тому что ничего не пропало.
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779025
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

я так и написал: "аргументов не будет".
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779027
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл Эраrgreat,

я так и написал: "аргументов не будет".Портабельность - не агрумент?
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779029
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatФэйтл Эраrgreat,

я так и написал: "аргументов не будет".Портабельность - не агрумент?
Ты продемонстрировал лишь безграмотность. А твои личные фобии/тараканы - это к врачам.
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779030
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл Эра,

А, аргументации не будет значит. Ок.
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779032
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реестр не кросплатформенно и притянуто с 90ых. Local storage кросплатформенно и интуитивнее ближе, если конечно не привет из 90ых.
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779051
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatФэйтл Эраrgreat,

я так и написал: "аргументов не будет".Портабельность - не агрумент?Если писать в файл, то никакой портабельности не будет, т.к. его придется хранит в AppData, который лежит хз где. Разницы нет.

Должны быть глобальные и локальные настройки. Глобальные устанавливаются один раз при установке с админскими правами (в LOCAL_MACHINE или инифайл возле exe, дальше они только для чтения), и локальные (в CURRENT_USER или в локальной папке пользователя).
Где именно - вообще не важно.
Единственный вменяемый аргумент - гипотетически возможная кроссплатформа, под которой реестра нет.
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779052
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatДостаточно не ставить ПО в Program Files.Если ты не админ и тебе не дали прав на папку программы (не обязательно пф) - то доступ будет только в AppData.
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779053
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteРеестр не кросплатформенно и притянуто с 90ых. Local storage кросплатформенно и интуитивнее ближе, если конечно не привет из 90ых.Мне нравится. Он уменьшает кол-во файлов. Плюс все настройки в одном месте. Мне удобно.
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779057
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите, какие права нужны и как их выдать?
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779059
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat, мне нужно писать в реестр по нескольким причинам.
Моя программа содержит в себе ресурсы, и находится программа будет на раб. столе...
Это 1 exe без посторонних файлов.
В программе несколько edit, checkbox и пара строковых переменных.
Не хочу создавать где-либо ini, так как в edit`ах возможны символы, которые ini отображает как знаки вопроса.
С реестром всё в норме.
Но как и говорил, при копировании допустим на раб стол exe, данные не читаются и не записываются.

О каких правах идёт речь? Что конкретно нужно сделать?
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779060
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9ne,

в какую ветку пишешь ?

GetLastError что говорит ?
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779063
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neСкажите, какие права нужны и как их выдать?
У тебя что-то с путем к ини-файлу просто стало. Ты уверен, что его тоже "перенесли" на рабочий стол?
Если да - значит обращаешься к нему неверно. Перед обращением выведи путь к файлу в MessageBox и посмотри.

Права?... Если ты хочешь прав на запись в LOCAL_MACHINE, то они как бы есть, но он виртуализируется (после перезапуска изменения умрут).
Можешь попробовать попытаться отключить виртуализацию. Если не поможет - значит прав уже и не хватит. Попробуй для этого что-то вроде такого:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
// Включает (или отключает) виртуализацию (HKEY_LOCAL_MACHINE и др) (для Win7 и выше)
function SetRegistryVirtualization( bState: BOOL ): Boolean;
const
  TokenVirtualizationEnabled = 24;
var
  hToken : THANDLE;
  vi: TOSVersionInfo;
begin
  if g_bVirtualizationCurrentState = bState then begin
    Result := True;
    Exit;
  end;

  vi.dwOSVersionInfoSize := sizeof( vi );
  GetVersionEx( vi );
  if ( vi.dwMajorVersion > 6 ) or ( ( vi.dwMajorVersion = 6 ) and ( vi.dwMinorVersion >= 1 ) ) then begin // from Windows 7 - UAC
    Result := OpenProcessToken( GetCurrentProcess, MAXIMUM_ALLOWED, hToken );
    if Result then begin
      Result := SetTokenInformation( hToken, TTokenInformationClass( TokenVirtualizationEnabled ), @bState, sizeof( bState ) );
      if Result then
        g_bVirtualizationCurrentState := bState;
    end;
  end else
    Result := True; // Виртуализация и так невозможна в старой Windows
end;
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779065
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл, тут глоб переменная еще нужна
Код: pascal
1.
2.
var
  g_bVirtualizationCurrentState: BOOL = True; // По умолчанию она включена
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779073
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockЗабыл, тут глоб переменная еще нужна
Код: pascal
1.
2.
var
  g_bVirtualizationCurrentState: BOOL = True; // По умолчанию она включена


я попробовал, это не помогло.. Оказывается нужно с правами админа запускать программу..)))
Ну, хоть дал повод людям подебатить )))
...
Рейтинг: 0 / 0
Не записываются данные в реестр, если скопировать exe
    #39779074
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9nergreat, мне нужно писать в реестр по нескольким причинам.
Моя программа содержит в себе ресурсы, и находится программа будет на раб. столе...
Это 1 exe без посторонних файлов.
В программе несколько edit, checkbox и пара строковых переменных.
EXE-шники на рабочем столе - так себе практика я бы сказал.
Не ясно чем тебя не устраивает ярлык на папку с ПО, ну да хозяин-барин.

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

С реестром всё в норме.
Но как и говорил, при копировании допустим на раб стол exe, данные не читаются и не записываются.
Ты прямо как комсомолец Узбекистана. Героически решаешь проблемы, которые сам себе создаешь.
Ну да ладно. Хочешь реестр - пиши в реестр. Но без расширенных прав у тебя будет доступ только к ветке HKEY_CURRENT_USER.
Вот туда и пиши.
HKEY_CURRENT_USER\Software\НазваниеТвоейПрограммы

О каких правах идёт речь? Что конкретно нужно сделать?О правах пользователя windows.
Обычный юзер может делать далеко не все. Да и админу понаделали ограничений.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не записываются данные в реестр, если скопировать exe
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]