Member 13879661 Ответов: 1

Как создать параметр реестра в VB 6.0?


Мне нужно создать следующий ключ в SchUseStrongCrypto
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319

Может ли кто-нибудь помочь мне, как это сделать

Что я уже пробовал:

Явный Параметр

Частная константный параметр типа reg_sz как долго = 1 'параметр типа reg_sz представляет собой фиксированную длину текстовой строки.
Private Const REG_DWORD As Long = 4 'REG_DWORD представляет данные числом длиной 4 байта.

Private Const CTR = &H80000000 'хранящаяся здесь информация гарантирует, что при открытии файла с помощью Проводника Windows откроется правильная программа.
Private Const HKEY_CURRENT_USER = &H80000001 'содержит корневую информацию конфигурации для пользователя, который в данный момент вошел в систему.
Private Const HKEY_LOCAL_MACHINE = &H80000002 'содержит информацию о конфигурации конкретного компьютера (для любого пользователя).
Private Const HKEY_USERS = &H80000003 'содержит корневой каталог всех профилей пользователей на компьютере.

'Возвращаемые значения для всех функций реестра
Private Const ERROR_SUCCESS = 0
Private Const ERROR_NONE = 0

Private Const KEY_QUERY_VALUE = &H1 'требуется для запроса значений раздела реестра.
Private Const KEY_ALL_ACCESS = &H3F 'объединяет права доступа STANDARD_RIGHTS_REQUIRED, KEY_QUERY_VALUE, KEY_SET_VALUE, KEY_CREATE_SUB_KEY, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY и KEY_CREATE_LINK.


'API-вызовы для записи в реестр
'Закрыть Раздел Реестра
Частная функция объявления RegCloseKey Lib "advapi32.dll" (бывал хки так долго) так долго
'Создать Раздел Реестра
Частные заявляют функция RegCreateKey Либ "advapi32.dll" псевдоним "RegCreateKeyA" (раздел hkey бывал так долго, lpSubKey бывал, как струна, phkResult как долго) как долго
- Открыть Раздел Реестра
Частные заявляют функция RegOpenKeyEx Либ "advapi32.dll" псевдоним "RegOpenKeyExA" (раздел hkey бывал так долго, lpSubKey бывал, как струна, ulOptions бывал так давно, бывал samDesired, как долго, phkResult как долго) как долго
'Запрос строкового значения
Частные заявляют функция RegQueryValueExString Либ "advapi32.dll" псевдоним "RegQueryValueExA" (раздел hkey бывал так долго, lpValueName бывал, как струна, бывал lpReserved как долго, как долго lpType, lpData бывал, как струна, lpcbData как долго) как долго
'Запрос длинного значения
Частные заявляют функция RegQueryValueExLong Либ "advapi32.dll" псевдоним "RegQueryValueExA" (раздел hkey бывал так долго, lpValueName бывал, как струна, бывал lpReserved как долго, lpType, как долго, как долго lpData, lpcbData как долго) как долго
'Запрос нулевого значения
Частные заявляют функция RegQueryValueExNULL Либ "advapi32.dll" псевдоним "RegQueryValueExA" (раздел hkey бывал так долго, lpValueName бывал, как струна, бывал lpReserved как долго, как долго lpType, бывал lpData как долго, lpcbData как долго) как долго
- Перечислить Дополнительные Ключи
Частные заявляют функция RegEnumKey Либ "advapi32.dll" псевдоним "RegEnumKeyA" (раздел hkey бывал так долго, dwIndex бывал так долго, lpName бывал, как струна, бывал cbName как долго) как долго
'Хранить значение
Частные заявляют функция RegSetValueEx Либ "advapi32.dll" псевдоним "RegSetValueExA" (бывал раздел hkey так долго, бывал lpValueName как струна, бывал сдержан, как долго, бывал dwType как долго, lpData, как и любой, бывал параметр cbdata как долго) как долго
-Удалить Ключ
Частные заявляют функция RegDeleteKey Либ "advapi32.dll" псевдоним "RegDeleteKeyA" (раздел hkey бывал так долго, lpSubKey бывал как строка) как долго

Частная суб SaveValue(раздел hkey тех пор, strPath, как струна, strvalue как струна, strData как строку)

Дим рет
- Создайте новый ключ
RegCreateKey hKey, strPath, ret
- Сохраните строку в ключе
RegSetValueEx ret, strvalue, 0, REG_DWORD, ByVal strData, Len(strData)
- закрой ключ.
RegCloseKey ret

Конец Подводной Лодки

Private Sub QueryValue(sKeyName As String, sValueName As String)

Dim lRetVal As Long 'результат работы функций API
Дим разделе реестра hkey как долго обрабатывать открытого ключа
Dim vValue As Variant 'настройка запрашиваемого значения
Тусклые Данные Как Долго
Dim retval As Long 'возвращаемое значение функций RegQuery
Dim lType As Long 'определить тип данных текущих данных
Dim lValue As Long 'длинное значение
Dim sValue As String 'строковое значение

lRetVal = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sKeyName, 0, KEY_QUERY_VALUE, hKey) 'открыть ключ для запроса значения
-Мановара Изменился
'lRetVal = QueryValueEx(hKey, sValueName, vValue) 'запрос (определение) сохраненного значения
код = RegQueryValueExNULL(раздел hkey, перед взваливанием, 0&амп;, ltype равными, 0&амп;, сведения)
Если retval <> ERROR_NONE, то MsgBox "ключ Regisrt не существует exist"
Если retval = ERROR_NONE, то
Выберите тип обращения lType
- Определить строки
Чехол типа reg_sz:
sValue = String(Data, 0)

retval = RegQueryValueExString(hKey, sValueName, 0&, lType, sValue, Data)

Если retval = ERROR_NONE, то
vValue = Left$(sValue, Data - 1)
Еще
vValue = пусто
Конец, Если

'Определение слова
Дело REG_DWORD значение:
retval = RegQueryValueExLong(hKey, sValueName, 0&, lType, lValue, Data)

Если retval = ERROR_NONE, то vValue = lValue

Дело Другое
- все остальные типы данных не поддерживаются
код = -1
Конец Выбрать

'frmRegistryChng.Caption = vValue 'устанавливает заголовок формы на любой сохраненный текст
MsgBox "настройки Regisrt существуют"

RegCloseKey (hKey) 'закрыть ключ
Конец, Если
Вызовите SaveValue(HKEY_LOCAL_MACHINE, "Software\Microsoft\.NETFramework\v4.0.30319", "SchUseStrongCrypto", "9999") 'вызовите SaveValue Sub для сохранения значения в реестре

Конец Подводной Лодки



Частные Command1_Click Югу()

QueryValue "Программное Обеспечение\Microsoft\.NETFramework\v4.0.30319", "SchUseStrongCrypto"

Конец Подводной Лодки

Kornfeld Eliyahu Peter

Пожалуйста, отформатируйте свой код и удалите ненужные части... Прочитать его в таком виде практически невозможно...

1 Ответов

Рейтинг:
1

OriginalGriff

В основном: не надо. Доступ к реестру ограничен в современных операционных системах и будет ограничен еще больше, а не меньше. Вы не должны пытаться использовать реестр в новых проектах, вместо этого вы должны хранить свои данные в конфигурационных файлах.


Member 13879661

Мне нужно включить реестр, чтобы заставить приложение общаться через TLS1.2. я не уверен, что смогу сделать это через конфигурационные файлы.
А Я Могу ?

Dave Kreskowiak

Нет, вы не можете, но вы также не можете сделать это в реестре из вашего кода. Изменение чего-либо в разделе HKEY_LOCAL_MACHINE ограничено только учетными записями администраторов.

Это то, что вы должны установить в установщике для вашего приложения, а не в коде вашего приложения.

Member 13879661

Правда, я думал отредактировать его в установщике, но что делать, если реестр будет изменен. Мое приложение нуждается в этой функциональности в определенное время.
Приложение проверило наличие .net framework 4.5 и установило этот фреймворк во время установки. Изучив некоторые статьи, я выяснил, что для фреймворка 4.7 ключи (которые я требую создать) существуют по умолчанию. Однако я проанализировал другой случай использования, когда, если какая-то установка/Установка выполняется для более высоких/более низких фреймворков, они могут быть/не быть там.
Простые работы, имеющие его при установке, не являются лучшим решением(я могу быть в правильном положении, и предложения от вас помогут мне получить лучшее разрешение :) )
Поэтому я подумал о том, чтобы сделать это с помощью приложения.

Все пользователи, использующие приложение, как правило, являются администраторами( я согласен с частями прав администратора)

Спасибо Вам за всю помощь до сих пор !

Dave Kreskowiak

"Убедиться, что он есть" - это не зависит ни от вас, ни от вашего кода. Это зависит от клиента.

Этот материал также может быть установлен и сброшен групповой политикой, даже во время выполнения вашего кода.

У вас не будет полного контроля над настройками. Все, что вы можете сделать, это поместить эту информацию в документацию вашего приложения и позволить клиенту управлять ею.