Страница: 1 |
Страница: 1 |
Вопрос: RegCreateKey
Добавлено: 04.02.05 18:44
Автор вопроса: Виталик
Создаю ключ используя api, но в вин2к он не создается! Как мне быть? Код:
модуля:
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias _
"RegSetValueExA" (ByVal HKEY As Long, ByVal lpValueName As _
String, ByVal Reserved As Long, ByVal dwType As Long, lpData _
As Any, ByVal cbData As Long) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias _
"RegCreateKeyExA" (ByVal HKEY As Long, ByVal lpSubKey As String, _
ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions _
As Long, ByVal samDesired As Long, lpSecurityAttributes As _
Long, phkResult As Long, lpdwDisposition As Long) _
As Long
Private Const REG_SZ = 1 ' Unicode null terminated string
Private Const ERROR_SUCCESS = 0
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Sub SetRegString(HKEY As Long, strSubKey As String, _
strValueName As String, strSetting _
As String)
On Error Resume Next
Dim hNewHandle As Long
Dim lpdwDisposition As Long
'*****************************************************************
' Create & open the key. If success, then get then write the data
' to the key.
'*****************************************************************
If RegCreateKeyEx(HKEY, strSubKey, 0, strValueName, 0, _
KEY_ALL_ACCESS, 0&, hNewHandle, lpdwDisposition) = _
ERROR_SUCCESS Then
If RegSetValueEx(hNewHandle, strValueName, 0, REG_SZ, _
ByVal strSetting, Len(strSetting)) <> ERROR_SUCCESS Then
End If
Else
End If
'*****************************************************************
' ALWAYS close any keys that you open.
'*****************************************************************
RegCloseKey hNewHandle
End Sub
Формы:
Private Sub Command1_Click()
SetRegString HKEY_LOCAL_MACHINE, Text1, Text3, Text4
End Sub
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 04.02.05 20:18
Возможно, не хватает прав, посмотри, что возвращает RegCreateKeyEx
Номер ответа: 2
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #2
Добавлено: 04.02.05 20:50
А что у тебя в Text1 содержится? Надо ведь полностью показать код, чтобы можно было ответить на вопрос.
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 04.02.05 23:39
Не используй KEY_ALL_ACCESS, используй что-то вроде: KEY_SET_VALUE or KEY_CREATE_SUB_KEY...
ALL_ACCESS - есть плохо...
Номер ответа: 4
Автор ответа:
Виталик
Вопросов: 4
Ответов: 4
Профиль | | #4
Добавлено: 06.02.05 18:10
в text1 - имя раздела в text3 - имя ключа в text4 - имя параметра. Режим - Администратор. По-моему ч-з msgbox - 84 (возвращает)
Это как? Писать вместо key_all_access их? А значение констант нужно задавать?
Номер ответа: 5
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #5
Добавлено: 06.02.05 18:30
ЧТО В TEXT1 ????
Как называется имя? Есть его символьное представление? В каком разделе ты пытаешься создать ключ?
Номер ответа: 6
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #6
Добавлено: 06.02.05 20:13
и как же не задавать значений констант!? разумеется нужно, или ты и KEY_ALL_ACCESS не задавал ???
Номер ответа: 7
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #7
Добавлено: 06.02.05 20:23
И зачем в RegCreateKeyEx четвертым параметром передаешь strValueName? Там должен быть lpClass.
И константы если не указаны, вместо них будут передаваться нули, как пустая переменная типа вариант.
Номер ответа: 8
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #8
Добавлено: 07.02.05 09:56
Чет-то мне кажется ты с параметрами напутал. KEY_ALL_ACCESS у тебя стоит в качестве samDesired, а LPSECURITY_ATTRIBUTES - &0. Результат очевиден.
Номер ответа: 9
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #9
Добавлено: 07.02.05 09:58
Хотя нет, так оно и надо. Странно. Код ошибки какой даёт?