📄 winreg.pas
字号:
{******************************************************************}
{ }
{ Borland Delphi Runtime Library }
{ Registry interface unit }
{ }
{ Portions created by Microsoft are }
{ Copyright (C) 1995-1999 Microsoft Corporation. }
{ All Rights Reserved. }
{ }
{ The original file is: winreg.h, released June 2000. }
{ The original Pascal code is: WinReg.pas, released December 2000 }
{ The initial developer of the Pascal code is Marcel van Brakel }
{ (brakelm@bart.nl). }
{ }
{ Portions created by Marcel van Brakel are }
{ Copyright (C) 1999 Marcel van Brakel. }
{ }
{ Obtained through: }
{ Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ You may retrieve the latest version of this file at the Project }
{ JEDI home page, located at http://delphi-jedi.org }
{ }
{ The contents of this file are used with permission, subject to }
{ the Mozilla Public License Version 1.1 (the "License"); you may }
{ not use this file except in compliance with the License. You may }
{ obtain a copy of the License at }
{ http://www.mozilla.org/MPL/MPL-1.1.html }
{ }
{ Software distributed under the License is distributed on an }
{ "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or }
{ implied. See the License for the specific language governing }
{ rights and limitations under the License. }
{ }
{******************************************************************}
unit WinReg;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$HPPEMIT '#include "WinReg.h"'}
{$HPPEMIT ''}
{$I WINDEFINES.INC}
interface
uses
WinBase, WinNT, WinType;
//
// Requested Key access mask type.
//
type
REGSAM = ACCESS_MASK;
{$EXTERNALSYM REGSAM}
//
// Reserved Key Handles.
//
const
HKEY_CLASSES_ROOT = HKEY(ULONG_PTR(LONG($80000000)));
{$EXTERNALSYM HKEY_CLASSES_ROOT}
HKEY_CURRENT_USER = HKEY(ULONG_PTR(LONG($80000001)));
{$EXTERNALSYM HKEY_CURRENT_USER}
HKEY_LOCAL_MACHINE = HKEY(ULONG_PTR(LONG($80000002)));
{$EXTERNALSYM HKEY_LOCAL_MACHINE}
HKEY_USERS = HKEY(ULONG_PTR(LONG($80000003)));
{$EXTERNALSYM HKEY_USERS}
HKEY_PERFORMANCE_DATA = HKEY(ULONG_PTR(LONG($80000004)));
{$EXTERNALSYM HKEY_PERFORMANCE_DATA}
HKEY_CURRENT_CONFIG = HKEY(ULONG_PTR(LONG($80000005)));
{$EXTERNALSYM HKEY_CURRENT_CONFIG}
HKEY_DYN_DATA = HKEY(ULONG_PTR(LONG($80000006)));
{$EXTERNALSYM HKEY_DYN_DATA}
PROVIDER_KEEPS_VALUE_LENGTH = $1;
{$EXTERNALSYM PROVIDER_KEEPS_VALUE_LENGTH}
type
val_context = record
valuelen: Integer; // the total length of this value
value_context: LPVOID; // provider's context
val_buff_ptr: LPVOID; // where in the ouput buffer the value is.
end;
{$EXTERNALSYM val_context}
PVALCONTEXT = ^val_context;
{$EXTERNALSYM PVALCONTEXT}
TValContext = val_context;
PVALUEA = record // Provider supplied value/context.
pv_valuename: LPSTR; // The value name pointer
pv_valuelen: Integer;
pv_value_context: LPVOID;
pv_type: DWORD;
end;
{$EXTERNALSYM PVALUEA}
PPVALUEA = ^PVALUEA;
{$EXTERNALSYM PPVALUEA}
TPValueA = PVALUEA;
PVALUEW = record // Provider supplied value/context.
pv_valuename: LPWSTR; // The value name pointer
pv_valuelen: Integer;
pv_value_context: LPVOID;
pv_type: DWORD;
end;
{$EXTERNALSYM PVALUEW}
PPVALUEW = ^PVALUEW;
{$EXTERNALSYM PPVALUEW}
TPValueW = PVALUEW;
{$IFDEF UNICODE}
PVALUE = PVALUEW;
{$EXTERNALSYM PVALUE}
PPVALUE = PPVALUEW;
{$EXTERNALSYM PPVALUE}
TPValue = TPValueW;
{$ELSE}
PVALUE = PVALUEA;
{$EXTERNALSYM PVALUE}
PPVALUE = PPVALUEA;
{$EXTERNALSYM PPVALUE}
TPValue = TPValueA;
{$ENDIF}
QUERYHANDLER = function (keycontext: LPVOID; val_list: PVALCONTEXT;
num_vals: DWORD; outputbuffer: LPVOID; total_outlen: LPDWORD;
input_blen: DWORD): DWORD; cdecl;
{$EXTERNALSYM QUERYHANDLER}
PQUERYHANDLER = ^QUERYHANDLER;
{$EXTERNALSYM PQUERYHANDLER}
TQueryHandler = QUERYHANDLER;
provider_info = record
pi_R0_1val: PQUERYHANDLER;
pi_R0_allvals: PQUERYHANDLER;
pi_R3_1val: PQUERYHANDLER;
pi_R3_allvals: PQUERYHANDLER;
pi_flags: DWORD; // capability flags (none defined yet).
pi_key_context: LPVOID;
end;
{$EXTERNALSYM provider_info}
REG_PROVIDER = provider_info;
{$EXTERNALSYM REG_PROVIDER}
PPROVIDER = ^provider_info;
{$EXTERNALSYM PPROVIDER}
TProviderInfo = provider_info;
PProviderInfo = ^provider_info;
value_entA = record
ve_valuename: LPSTR;
ve_valuelen: DWORD;
ve_valueptr: DWORD_PTR;
ve_type: DWORD;
end;
{$EXTERNALSYM value_entA}
VALENTA = value_entA;
{$EXTERNALSYM VALENTA}
PVALENTA = ^VALENTA;
{$EXTERNALSYM PVALENTA}
TValueEntA = value_entA;
PValueEntA = ^value_entA;
value_entW = record
ve_valuename: LPWSTR;
ve_valuelen: DWORD;
ve_valueptr: DWORD_PTR;
ve_type: DWORD;
end;
{$EXTERNALSYM value_entW}
VALENTW = value_entW;
{$EXTERNALSYM VALENTW}
PVALENTW = ^VALENTW;
{$EXTERNALSYM PVALENTW}
TValueEntW = value_entW;
PValueEntW = ^value_entW;
{$IFDEF UNICODE}
VALENT = VALENTW;
{$EXTERNALSYM VALENT}
PVALENT = PVALENTW;
{$EXTERNALSYM PVALENT}
TValueEnt = TValueEntW;
PValueEnt = PValueEntW;
{$ELSE}
VALENT = VALENTA;
{$EXTERNALSYM VALENT}
PVALENT = PVALENTA;
{$EXTERNALSYM PVALENT}
TValueEnt = TValueEntA;
PValueEnt = PValueEntA;
{$ENDIF}
//
// Default values for parameters that do not exist in the Win 3.1
// compatible APIs.
//
const
WIN31_CLASS = nil;
{$EXTERNALSYM WIN31_CLASS}
//
// API Prototypes.
//
function RegCloseKey(hKey: HKEY): LONG; stdcall;
{$EXTERNALSYM RegCloseKey}
function RegOverridePredefKey(hKey: HKEY; hNewHKey: HKEY): LONG; stdcall;
{$EXTERNALSYM RegOverridePredefKey}
function RegOpenUserClassesRoot(hToken: HANDLE; dwOptions: DWORD;
samDesired: REGSAM; var phkResult: HKEY): LONG; stdcall;
{$EXTERNALSYM RegOpenUserClassesRoot}
function RegOpenCurrentUser(samDesired: REGSAM; var phkResult: HKEY): LONG; stdcall;
{$EXTERNALSYM RegOpenCurrentUser}
function RegDisablePredefinedCache: LONG; stdcall;
{$EXTERNALSYM RegDisablePredefinedCache}
function RegConnectRegistryA(lpMachineName: LPCSTR; hKey: HKEY;
var phkResult: HKEY): LONG; stdcall;
{$EXTERNALSYM RegConnectRegistryA}
function RegConnectRegistryW(lpMachineName: LPCWSTR; hKey: HKEY;
var phkResult: HKEY): LONG; stdcall;
{$EXTERNALSYM RegConnectRegistryW}
{$IFDEF UNICODE}
function RegConnectRegistry(lpMachineName: LPCWSTR; hKey: HKEY;
var phkResult: HKEY): LONG; stdcall;
{$EXTERNALSYM RegConnectRegistry}
{$ELSE}
function RegConnectRegistry(lpMachineName: LPCSTR; hKey: HKEY;
var phkResult: HKEY): LONG; stdcall;
{$EXTERNALSYM RegConnectRegistry}
{$ENDIF}
function RegCreateKeyA(hKey: HKEY; lpSubKey: LPCSTR; var phkResult: HKEY): LONG; stdcall;
{$EXTERNALSYM RegCreateKeyA}
function RegCreateKeyW(hKey: HKEY; lpSubKey: LPCWSTR; var phkResult: HKEY): LONG; stdcall;
{$EXTERNALSYM RegCreateKeyW}
{$IFDEF UNICODE}
function RegCreateKey(hKey: HKEY; lpSubKey: LPCWSTR; var phkResult: HKEY): LONG; stdcall;
{$EXTERNALSYM RegCreateKey}
{$ELSE}
function RegCreateKey(hKey: HKEY; lpSubKey: LPCSTR; var phkResult: HKEY): LONG; stdcall;
{$EXTERNALSYM RegCreateKey}
{$ENDIF}
function RegCreateKeyExA(hKey: HKEY; lpSubKey: LPCSTR; Reserved: DWORD;
lpClass: LPSTR; dwOptions: DWORD; samDesired: REGSAM;
lpSecurityAttributes: LPSECURITY_ATTRIBUTES; var phkResult: HKEY;
lpdwDisposition: LPDWORD): LONG; stdcall;
{$EXTERNALSYM RegCreateKeyExA}
function RegCreateKeyExW(hKey: HKEY; lpSubKey: LPCWSTR; Reserved: DWORD;
lpClass: LPWSTR; dwOptions: DWORD; samDesired: REGSAM;
lpSecurityAttributes: LPSECURITY_ATTRIBUTES; var phkResult: HKEY;
lpdwDisposition: LPDWORD): LONG; stdcall;
{$EXTERNALSYM RegCreateKeyExW}
{$IFDEF UNICODE}
function RegCreateKeyEx(hKey: HKEY; lpSubKey: LPCWSTR; Reserved: DWORD;
lpClass: LPWSTR; dwOptions: DWORD; samDesired: REGSAM;
lpSecurityAttributes: LPSECURITY_ATTRIBUTES; var phkResult: HKEY;
lpdwDisposition: LPDWORD): LONG; stdcall;
{$EXTERNALSYM RegCreateKeyEx}
{$ELSE}
function RegCreateKeyEx(hKey: HKEY; lpSubKey: LPCSTR; Reserved: DWORD;
lpClass: LPSTR; dwOptions: DWORD; samDesired: REGSAM;
lpSecurityAttributes: LPSECURITY_ATTRIBUTES; var phkResult: HKEY;
lpdwDisposition: LPDWORD): LONG; stdcall;
{$EXTERNALSYM RegCreateKeyEx}
{$ENDIF}
function RegDeleteKeyA(hKey: HKEY; lpSubKey: LPCSTR): LONG; stdcall;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -