Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2011, 18:08   #1
АлМазСофт
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 24
По умолчанию Непонятки с работой ДЛЛ

Для регистрации самодельной конфы 1С сделал на Делфи длл-ку, которая вводит регкод и пишет его в реестр, а потом проверяет его, и если его нет или он неправильный отключает некие ключевые функции конфы, переводя ее в демо-режим.
На моем компе 2 юзера, я и жена. Так вот у меня все нормально работает, (W7, я админ), а у нее регкод вводится, а демо-режим не отключается.
Запускаю 1С от имени администратора.
Гуру, подскажите, пожалуйста, в чем дело и как решить проблему.
АлМазСофт вне форума Ответить с цитированием
Старый 04.01.2011, 18:12   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
пишет его в реестр
куда именно пишет? Под вистой права на запись в реестр сильно покоцали.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 04.01.2011, 18:19   #3
АлМазСофт
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 24
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
куда именно пишет? Под вистой права на запись в реестр сильно покоцали.
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('\Software\1C\1Cv7\7.7\ abonent3', True) then
begin
Reg.WriteString('License',Key);
Reg.CloseKey;
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('\SOFTWARE\1C\1Cv7', True) then
АлМазСофт вне форума Ответить с цитированием
Старый 04.01.2011, 18:53   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от АлМазСофт Посмотреть сообщение
Запускаю 1С от имени администратора.
А зачем? Походу, это и приводит к проблемам.

Цитата:
The HKEY_CURRENT_USER key maps to the root of the current user's branch in the HKEY_USERS key. It is cached for all threads in a process. Therefore, this value does not change when another user's profile is loaded. RegOpenCurrentUser uses the thread's token to access the appropriate key, or the default if the profile is not loaded.
RegOpenCurrentUser() в дельфовом классе для работы с регистри не используется, так что или ручками, или не запускать 1с от чужого имени.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 04.01.2011, 19:41   #5
АлМазСофт
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 24
По умолчанию

Запускал и от имени и не от имени - без эффекта.
Но я нашел решение - запускать в режиме совместимости c Win XP (обновление SP3) и все ОК.
АлМазСофт вне форума Ответить с цитированием
Старый 04.01.2011, 19:49   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Выход, конечно. Можно вобще 7 снести и ХП поставить, тогда для каждой вашей проги, работающей с регистри, не надо будет выставлять режим совместимости )

Кстати, в HKEY_LOCAL_MACHINE юзверь записывать не может, так что или OpenKey() поменять на OpenKeyReadOnly(), или Access присвоить KEY_READ.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 04.01.2011, 20:04   #7
АлМазСофт
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 24
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
Кстати, в HKEY_LOCAL_MACHINE юзверь записывать не может, так что или OpenKey() поменять на OpenKeyReadOnly(), или Access присвоить KEY_READ.
Я не программирую в Дельфи, просто нашел инструкцию, как делать внешние компоненты 1С на Дельфи и действовал по приведенному в ней шаблону, многого не понимая. Таким образом сделал несколько вполне рабочих ДЛЛ, и только на W7 столкнулся с этой проблемой.
Поэтому к Вам большая просьба - растолкуйте, пожалуйста эту цитату, особенно в части Access присвоить KEY_READ.
АлМазСофт вне форума Ответить с цитированием
Старый 04.01.2011, 21:12   #8
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

У класса TRegistry есть свойство Access, которое по-умолчанию установлено в KEY_ALL_ACCESS, т.е. все действия с ключами запрашиваются с доступом как на чтение, так и на запись. Если реально из ключа нужно только читать, то свойству Access следует присвоить KEY_READ, чтобы винда понимала, что запись нам не нужна (или использовать метод OpenKeyReadOnly(), который открывает ключ с доступом KEY_READ, игнорируя Access).

Не знаю, поможет ли это в вашем случае, но это хорошая общепринятая практика.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 05.01.2011, 09:36   #9
АлМазСофт
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 24
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
У класса TRegistry есть свойство Access, которое по-умолчанию установлено в KEY_ALL_ACCESS, т.е. все действия с ключами запрашиваются с доступом как на чтение, так и на запись. Если реально из ключа нужно только читать, то свойству Access следует присвоить KEY_READ, чтобы винда понимала, что запись нам не нужна (или использовать метод OpenKeyReadOnly(), который открывает ключ с доступом KEY_READ, игнорируя Access).

Не знаю, поможет ли это в вашем случае, но это хорошая общепринятая практика.
Спасибо. Попробую использовать
АлМазСофт вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятки с return CodeNOT Общие вопросы C/C++ 2 03.12.2010 23:56
непонятки с if mrgrudge PHP 2 05.10.2010 12:01
Непонятки с DateTimePicker artemavd Общие вопросы Delphi 14 13.08.2009 13:32
Непонятки с кнопками Devoto Общие вопросы Delphi 2 16.11.2008 20:47
Непонятки с сетью! anton14 Компьютерное железо 4 12.11.2008 21:49