![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SaveKey с правами не ALL_ACCESS
RadaR © (2003-08-15 19:43:00)
Я использую TRegistry, но столкнулся с проблемой:
SaveKey происходит всегда с аттрибутами ПОЛНЫЙ ДОСТУП
Хотел на прямую поюзать АПИ (там есть переменная для задания такого доступа) но не нашел описания lpSecurityAttributes: PSecurityAttributes.
function RegSaveKey(hKey: HKEY; lpFile: PChar;
lpSecurityAttributes: PSecurityAttributes): Longint; stdcall;
Кто чем может помочь?
Almaz (2003-08-19 00:49:00) [1]
> RadaR (15.08.03 19:43)
> Я использую TRegistry, но столкнулся с проблемой:
> SaveKey происходит всегда с аттрибутами ПОЛНЫЙ ДОСТУП
> Хотел на прямую поюзать АПИ (там есть переменная для задания
> такого доступа) но не нашел описания lpSecurityAttributes:
> PSecurityAttributes.
>
> function RegSaveKey(hKey: HKEY; lpFile: PChar;
> lpSecurityAttributes: PSecurityAttributes): Longint; stdcall;
>
> Кто чем может помочь?
Попробую помочь ;)
1) Если у вас Дельфи версии >= 5.0 то у TRegistry есть свойство - Access. По умолчанию, он задан как KEY_ALL_ACCESS, но достаточно вручную установить Access := KEY_READ (или другой доступ, какой вам нужен) - и пользоваться TRegistry дальше.
2) Если Дельфи 3.0 или ниже (про 4.0 не знаю) то придуться использовать WinAPI. Так вот права на доступ задаются при открытии ключа, а не при сохранении значения. Т.е. права задаются в функции RegOpenKeyEx. Например:
RegOpenKeyEx(HKEY_CLASSES_ROOT, "имя ключа", 0,
KEY_READ, Key)
3) PSecurityAttributes - к правам доступа к ключам в том понимании, в котором вы его изложили - отношения не имеет
Удачи.
jonni (2003-08-18 18:02:00) [2]
может ону подрозумевают ключ реестра как файл......?
Игорь Шевченко (2003-08-18 13:55:00) [3]
jonni © (18.08.03 13:16)
Внимательно вопрос читаем.
> function RegSaveKey(hKey: HKEY; lpFile: PChar;
> lpSecurityAttributes: PSecurityAttributes): Longint; stdcall
Внимательно help читаем по RegSaveKey.
lpSecurityAttributes
Windows NT: Pointer to a SECURITY_ATTRIBUTES structure that specifies a security descriptor for the new file. If lpSecurityAttributes is NULL, the file gets a default security descriptor.
Windows 95: This parameter is ignored.
jonni (2003-08-18 13:19:00) [4]
to RadaR:
posmotri na eto naprimer:
The SECURITY_ATTRIBUTES structure contains the security descriptor for an object and specifies whether the handle retrieved by specifying this structure is inheritable.
//--------------------------------
typedef struct _SECURITY_ATTRIBUTES { // sa
DWORD nLength;
LPVOID lpSecurityDescriptor;
BOOL bInheritHandle;
} SECURITY_ATTRIBUTES;
//--------------------------------
jonni (2003-08-18 13:16:00) [5]
to Игорь Шевченко:
то что отношения к реестру нету это ты зря
LONG RegCreateKeyEx(
HKEY hKey, // handle of an open key
LPCTSTR lpSubKey, // address of subkey name
DWORD Reserved, // reserved
LPTSTR lpClass, // address of class string
DWORD dwOptions, // special options flag
REGSAM samDesired, // desired security access
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // address of key security structure
PHKEY phkResult, // address of buffer for opened handle
LPDWORD lpdwDisposition // address of disposition value buffer
);
Игорь Шевченко (2003-08-18 10:40:00) [6]
Эта переменная указывает какие атрибуты будут у создаваемого файла. К доступу к реестру она не имеет отношения.