Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Помогите с реестром винды  [new]
Недоходящий
Guest
В фоксе и режиме пользователя админ запускаю RegOpenKeyEx(HKEY_CURRENT_USER,sub_key_c1,0,security_access_mask,@lnResult) для управления реестром. все работает.

Но при других режимах Power User, Guest и т.д. оно не хочет довать доступ к реестру.

Как эту проблему устранить?
15 авг 05, 14:51    [1786686]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
FM32YO aka KID
Member

Откуда: Ukraine
Сообщений: 884
дык только админ имеет право в реестре копаться, а гость ИМХО никак, если только ему права админа не дать.
хотя на 100% не знаю - это 1-е что в голову пришло
15 авг 05, 16:58    [1787244]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
Недоходящий
Guest
Power User - разве не имеет право на редоктирование реестра через прогу (Power User выбирается с базывими настройками винды)?
15 авг 05, 19:06    [1787832]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
проходящий
Guest
Смотря какие ветки.
15 авг 05, 19:24    [1787860]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
Недоходящий
Guest
Меня интересуют ветки связанные с ODBC. Это ввод в реестр любых значении созданного драйвера (USERDSN).
16 авг 05, 10:32    [1788868]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
gotko
Member

Откуда: moskakaw
Сообщений: 121
тут надо копаться в локальной политике на компе...
16 авг 05, 11:33    [1789282]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi Недоходящий!

sub_key_c1 что содержит то? "Ручками" в данный ключ можно зайти из Regedit
под указанным аккаунтом? АПИшную GetLastError не пробовал применить, чтобы
узнать что же за ошибка произошла?

Posted via ActualForum NNTP Server 1.2

16 авг 05, 12:28    [1789688]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
Недоходящий
Guest
Hello Igor Korolyov!

sub_key_c1 = "Software\ODBC\ODBC.INI\"+fsql1
где fsql1 - любое название которое нужно создать или потом с него считывать.

но ошибки я смотрю никакой не выползает. просто винда не дает разрешения на открытия выбранной ветки и код продолжается выполняться дальше.

GetLastError - выдает 127. Че ето значит?
16 авг 05, 14:32    [1790468]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi Недоходящий!

Упс, стормозил тут надо смотреть что сама функция возвращает - это и есть
код ошибки.
Кстати зачем тебе Ex версия функции, как ты формируешь маску доступа, чем не
устраивает простая RegOpenKey() Ну и ясное дело нужно знть что в fsql1
содержится, есть ли такая ветка, какие установлены на неё Permissions на
тестовой машине и т.п.
В общем более полный код приведи.

Posted via ActualForum NNTP Server 1.2

16 авг 05, 22:52    [1792508]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
Недоходящий
Guest
Hello Igor Korolyov.
RegOpenKey() я не нашел описания. Только для RegOpenKeyEx.
Вот код

fsql1 = "а" && Это нужно создать в реестре

* Объявление необходимых переменных для работы с реестром
REG_SZ = 1
HKEY_CLASSES_ROOT = -2147483648
HKEY_CURRENT_USER = -2147483647
HKEY_LOCAL_MACHINE = -2147483646
HKEY_USERS = -2147483645
security_access_mask = 983103
security_access_mask_set = 2
* Декларирование необходимых функций
declare RegCreateKeyEx in advapi32.dll integer, string, integer, string, integer, integer, integer, integer @, integer @
declare RegOpenKeyEx in advapi32.dll integer, string, integer, integer, integer @
declare RegQueryValueEx in advapi32.dll integer, string, integer, string, string, integer @
DECLARE INTEGER RegSetValueEx IN advapi32.dll INTEGER,STRING, INTEGER,INTEGER,STRING @,INTEGER
DECLARE INTEGER RegCloseKey IN advapi32.dll INTEGER


sub_key_c1 = "Software\ODBC\ODBC.INI\"+fsql1
sub_key_c1_1 = "Software\ODBC\ODBC.INI\ODBC Data Sources"

* Анулирование необходимых переменных для декларированных функций
name_c = ""
lnResult_c=0
Disposition_c=0
lnResult = 0

RegCreateKeyEx(HKEY_CURRENT_USER,sub_key_c1,0,name_c,0,security_access_mask,0,@lnResult_c,@Disposition_c)

chan_c2='driver'
buff_2="C:\WINNT\System32\SQLSRV32.dll"
RegOpenKeyEx(HKEY_CURRENT_USER,sub_key_c1,0,security_access_mask,@lnResult)

RegSetValueEx(lnResult,chan_c2,0,reg_sz,@buff_2,40)
chan_c6=fsql1
buff_6="SQL Server"

RegOpenKeyEx(HKEY_CURRENT_USER,sub_key_c1_1,0,security_access_mask ,@lnResult)
* Так вот! Здесь при запросе открытия lnResult получает 0. Если ноль то винда дала отказ открытия данной ветки для внесения туда чего-либо. А требуется как-то получить положительное число. В первом открытии число получается, а здесь 0!
RegSetValueEx(lnResult,chan_c6,0,reg_sz,@buff_6,15)
17 авг 05, 12:04    [1793741]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi Недоходящий!

1) Посмотри в MSDN online

LONG RegOpenKey(
HKEY hKey,
LPCTSTR lpSubKey,
PHKEY phkResult
);

Ну и другие "упрощённые" функции тоже посмотри.
2) РЕЗУЛЬТАТЫ от каждого вызова Reg* смотри - если там не 0 - то это и есть
код ошибки. Сами "расшифровки" кодов можно получить через АПИ функцию
FormatMessage или просто посмотреть в winerror.h - если стоит MS VC++, BCB
или иное сишное средство разработки, или просто есть заголовочные файлы.

Posted via ActualForum NNTP Server 1.2

17 авг 05, 23:51    [1797126]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
Недоходящий
Member

Откуда:
Сообщений: 912
TO Igor Korolyov

Файла ошибок у меня нет (если омжете кинуть на мыло или дать сылку было бы просто здорово). НА MSDN еще в поисках, но пока не нахожу. А при запуске проги почему-то выводится число больше 0 и ветка создается. Почему, если любое число это ошибка?
18 авг 05, 14:20    [1798862]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi Недоходящий!

> А при запуске проги почему-то выводится число больше 0 и ветка создается.
> Почему, если любое число это ошибка?

Выводится КАКИМ ИМЕННО из твоей кучи АПИ вызовов? Может как раз создание
значения и не проходит - а ветку создаёт.

Posted via ActualForum NNTP Server 1.2

19 авг 05, 00:37    [1800661]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
Недоходящий
Member

Откуда:
Сообщений: 912
To Igor Korolyov

Фокс выводит при ф-ции Create - 0
в первом открытии ветки - 544
во втором - 588.
Но при последующих запусках числа меняются на разные величины!
19 авг 05, 11:51    [1801674]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi Недоходящий!

Ты не понял...
1) Декларации нужно изменить, чтобы ВСЕ функции были объявлены как
возвращающие INTEGER.
2) Интересует ИМЕННО то что возвращает КАЖДАЯ функция (а она НЕ МОЖЕТ
возвращать ни 544 ни 588 - т.к. это некорректные коды ошибок), а не то какое
значение принимает параметр переданный по ссылке.
3) DSN создаются НЕ путём записи чего-то в реестр, а через вызов
соответствующего АПИ - в частности SQLConfigDataSource из библиотеки
ODBCCP32.DLL - примеры использования из фокса найти нетрудно.
4) Вообще в подавляющем большинстве случаев DSN как таковые НЕ НУЖНЫ - т.к.
можно просто использовать строку соединения включающую имя драйвера и прочие
атрибуты соединения.
5) Вообще работать нужно хотя-бы АККУРАТНО - в частности если уж создал
хендл к ключу реестра, то не поленись и ЗАКРЫТЬ его по завершении работы.
6) В поставке VFP есть FFC класс registry (как в виде prg так и в виде
vcx) - это обёртка над соответствующими функциями упрощающая работу. Если
хочешь сам работать с АПИ, то хотя-бы изучи как это сделано в данном классе.

Posted via ActualForum NNTP Server 1.2

21 авг 05, 00:08    [1805196]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с реестром винды  [new]
Недоходящий
Member

Откуда:
Сообщений: 912
To Igor Korolyov

По поводу строки соединения я согдасен, это я тоже использую. Но мне в ближайшее время понадобиться работа с реестром, поэтому я заранее спрашиваю чтоб решить все вопросы. А с фоксом я не так долго работаю, поэтому многих вещей не знаю. Закрытее веток я забыл дописать, они у меня в проге есть. За файл спасибо, ща зделаю и посмотрб что получится.
22 авг 05, 10:39    [1805991]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить