RegDeleteValue - Функция удаляет заданный параметр 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

RegDeleteValue - Функция удаляет заданный параметр



 

Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long

 

Основные параметры:

hKey - манипулятор ключа
lpValueName - имя удаляемого параметра

Пример:

Dim Result As Long


'// Находим манипулятор нужного ключа
RegOpenKeyEx HKEY_CURRENT_USER, "MyProgram\Options", 0, KEY_ALL_ACCESS, Result


'// Удаляем параметр с именем StringValue

RegDeleteValue Result, "StringValue"


RegCloseKey Result '// Закрытие ключа


RegQueryValueEx - Функция считывает значения параметра


Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long


Основные параметры:

hKey - манипулятор ключа
lpValueName - имя читаемого параметра
lpData - заполняется значением заданного параметра

Пример:
Dim Result As Long
Dim DWResult As Long
Dim STResult As String

STResult = Space(255)

'// Находим манипулятор нужного ключа
RegOpenKeyEx HKEY_CURRENT_USER, "MyProgram\Options", 0, KEY_ALL_ACCESS, Result

'// Считываем значения числового параметра с именем DWordValue
RegQueryValueEx Result, "DWordValue", 0, 0, DWResult, 4

'// Считываем значения строкового параметра с именем StringValue
RegQueryValueEx Result, "StringValue", 0, 0, ByVal STResult, Len(STResult)

RegCloseKey Result '// Закрытие ключа

'// Выводим значение параметров

MsgBox DWResult '// Числовое
MsgBox STResult '// Строковое

В начало

 

Ассоциация с типами файлов

'// Функции

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 SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long

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 Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Boolean
End Type

 

'// Константы
Const HKEY_CLASSES_ROOT = &H80000000
Const REG_SZ = 1
Const KEY_ALL_ACCESS = &H3F

 

'// Функция для ассоциации типа файла с приложением
'// FileType - расширение файла

Public Sub AsProgram(FileType As String)

Dim retval As Long

Dim Result As Long

Dim SA As SECURITY_ATTRIBUTES

Dim sPath As String


'// Создаем ключ для программы
retval = RegCreateKeyEx(HKEY_CLASSES_ROOT, App.Title, 0, vbNullString, 0, KEY_ALL_ACCESS, SA, Result, &H1)

'// Присваиваем значению по умолчанию название программы

RegSetValueEx Result, "", 0, REG_SZ, ByVal App.Title, Len(App.Title)

 

'// Создаём ключ, связанный с расширением файла

retval = RegCreateKeyEx(HKEY_CLASSES_ROOT, FileType, 0, vbNullString, 0, KEY_ALL_ACCESS, SA, Result, &H1)

'// Присваиваем значению по умолчанию название программы

RegSetValueEx Result, "", 0, REG_SZ, ByVal App.Title, Len(App.Title)


'// Последние шаг - ассоциация типа с приложением

'// Определяем командную строку для приложения

If Right(App.Path, 1) = "\" Then

sPath = App.Path & App.EXEName & ".exe %1"

Else

sPath = App.Path & "\" & App.EXEName & ".exe %1"

End If


retval = RegCreateKeyEx(HKEY_CLASSES_ROOT, App.Title & "\shell\open\command", 0, vbNullString, 0, KEY_ALL_ACCESS, SA, Result, &H1)

RegSetValueEx Result, "", 0, REG_SZ, ByVal sPath, Len(sPath)

End Sub

В начало

 

Убираем программу из списка Alt+Ctrl+Del.

 

Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Public Declare Function GetCurrentProcess Lib "kernel32" () As Long
Public Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long
Public Const RSP_SIMPLE_SERVICE = 1
Public Const RSP_UNREGISTER_SERVICE = 0

Чтобы убрать вашу программу из списка Ctrl+Alt+Delete list, используйте процедуру MakeMeService:

 

Public Sub MakeMeService()
Dim pid As Long
Dim reserv As Long
pid = GetCurrentProcessId()
regserv = RegisterServiceProcess(pid, RSP_SIMPLE_SERVICE)
End Sub

 

Чтобы показать вашу программу в списке Ctrl+Alt+Delete, используйте процедуру UnMakeMeService:

 

Public UnMakeMeService()
Dim pid As Long
Dim reserv As Long
pid = GetCurrentProcessId()
regserv = RegisterServiceProcess(pid, RSP_UNREGISTER_SERVICE)
End Code

В начало

 



Поделиться:


Последнее изменение этой страницы: 2019-12-25; просмотров: 149; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.51.117 (0.005 с.)