📄 jwaaccctrl.pas
字号:
ACTRL_ACCESS_ALLOWED = $00000001;
{$EXTERNALSYM ACTRL_ACCESS_ALLOWED}
ACTRL_ACCESS_DENIED = $00000002;
{$EXTERNALSYM ACTRL_ACCESS_DENIED}
ACTRL_AUDIT_SUCCESS = $00000004;
{$EXTERNALSYM ACTRL_AUDIT_SUCCESS}
ACTRL_AUDIT_FAILURE = $00000008;
{$EXTERNALSYM ACTRL_AUDIT_FAILURE}
//
// Property list flags
//
ACTRL_ACCESS_PROTECTED = $00000001;
{$EXTERNALSYM ACTRL_ACCESS_PROTECTED}
//
// Standard and object rights
//
ACTRL_SYSTEM_ACCESS = $04000000;
{$EXTERNALSYM ACTRL_SYSTEM_ACCESS}
ACTRL_DELETE = $08000000;
{$EXTERNALSYM ACTRL_DELETE}
ACTRL_READ_CONTROL = $10000000;
{$EXTERNALSYM ACTRL_READ_CONTROL}
ACTRL_CHANGE_ACCESS = $20000000;
{$EXTERNALSYM ACTRL_CHANGE_ACCESS}
ACTRL_CHANGE_OWNER = $40000000;
{$EXTERNALSYM ACTRL_CHANGE_OWNER}
ACTRL_SYNCHRONIZE = DWORD($80000000);
{$EXTERNALSYM ACTRL_SYNCHRONIZE}
ACTRL_STD_RIGHTS_ALL = DWORD($f8000000);
{$EXTERNALSYM ACTRL_STD_RIGHTS_ALL}
ACTRL_STD_RIGHT_REQUIRED = DWORD(ACTRL_STD_RIGHTS_ALL and not ACTRL_SYNCHRONIZE);
{$EXTERNALSYM ACTRL_STD_RIGHT_REQUIRED}
ACTRL_DS_OPEN = ACTRL_RESERVED;
{$EXTERNALSYM ACTRL_DS_OPEN}
ACTRL_DS_CREATE_CHILD = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_DS_CREATE_CHILD}
ACTRL_DS_DELETE_CHILD = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_DS_DELETE_CHILD}
ACTRL_DS_LIST = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_DS_LIST}
ACTRL_DS_SELF = ACTRL_PERM_4;
{$EXTERNALSYM ACTRL_DS_SELF}
ACTRL_DS_READ_PROP = ACTRL_PERM_5;
{$EXTERNALSYM ACTRL_DS_READ_PROP}
ACTRL_DS_WRITE_PROP = ACTRL_PERM_6;
{$EXTERNALSYM ACTRL_DS_WRITE_PROP}
ACTRL_DS_DELETE_TREE = ACTRL_PERM_7;
{$EXTERNALSYM ACTRL_DS_DELETE_TREE}
ACTRL_DS_LIST_OBJECT = ACTRL_PERM_8;
{$EXTERNALSYM ACTRL_DS_LIST_OBJECT}
ACTRL_DS_CONTROL_ACCESS = ACTRL_PERM_9;
{$EXTERNALSYM ACTRL_DS_CONTROL_ACCESS}
ACTRL_FILE_READ = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_FILE_READ}
ACTRL_FILE_WRITE = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_FILE_WRITE}
ACTRL_FILE_APPEND = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_FILE_APPEND}
ACTRL_FILE_READ_PROP = ACTRL_PERM_4;
{$EXTERNALSYM ACTRL_FILE_READ_PROP}
ACTRL_FILE_WRITE_PROP = ACTRL_PERM_5;
{$EXTERNALSYM ACTRL_FILE_WRITE_PROP}
ACTRL_FILE_EXECUTE = ACTRL_PERM_6;
{$EXTERNALSYM ACTRL_FILE_EXECUTE}
ACTRL_FILE_READ_ATTRIB = ACTRL_PERM_8;
{$EXTERNALSYM ACTRL_FILE_READ_ATTRIB}
ACTRL_FILE_WRITE_ATTRIB = ACTRL_PERM_9;
{$EXTERNALSYM ACTRL_FILE_WRITE_ATTRIB}
ACTRL_FILE_CREATE_PIPE = ACTRL_PERM_10;
{$EXTERNALSYM ACTRL_FILE_CREATE_PIPE}
ACTRL_DIR_LIST = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_DIR_LIST}
ACTRL_DIR_CREATE_OBJECT = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_DIR_CREATE_OBJECT}
ACTRL_DIR_CREATE_CHILD = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_DIR_CREATE_CHILD}
ACTRL_DIR_DELETE_CHILD = ACTRL_PERM_7;
{$EXTERNALSYM ACTRL_DIR_DELETE_CHILD}
ACTRL_DIR_TRAVERSE = ACTRL_PERM_6;
{$EXTERNALSYM ACTRL_DIR_TRAVERSE}
ACTRL_KERNEL_TERMINATE = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_KERNEL_TERMINATE}
ACTRL_KERNEL_THREAD = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_KERNEL_THREAD}
ACTRL_KERNEL_VM = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_KERNEL_VM}
ACTRL_KERNEL_VM_READ = ACTRL_PERM_4;
{$EXTERNALSYM ACTRL_KERNEL_VM_READ}
ACTRL_KERNEL_VM_WRITE = ACTRL_PERM_5;
{$EXTERNALSYM ACTRL_KERNEL_VM_WRITE}
ACTRL_KERNEL_DUP_HANDLE = ACTRL_PERM_6;
{$EXTERNALSYM ACTRL_KERNEL_DUP_HANDLE}
ACTRL_KERNEL_PROCESS = ACTRL_PERM_7;
{$EXTERNALSYM ACTRL_KERNEL_PROCESS}
ACTRL_KERNEL_SET_INFO = ACTRL_PERM_8;
{$EXTERNALSYM ACTRL_KERNEL_SET_INFO}
ACTRL_KERNEL_GET_INFO = ACTRL_PERM_9;
{$EXTERNALSYM ACTRL_KERNEL_GET_INFO}
ACTRL_KERNEL_CONTROL = ACTRL_PERM_10;
{$EXTERNALSYM ACTRL_KERNEL_CONTROL}
ACTRL_KERNEL_ALERT = ACTRL_PERM_11;
{$EXTERNALSYM ACTRL_KERNEL_ALERT}
ACTRL_KERNEL_GET_CONTEXT = ACTRL_PERM_12;
{$EXTERNALSYM ACTRL_KERNEL_GET_CONTEXT}
ACTRL_KERNEL_SET_CONTEXT = ACTRL_PERM_13;
{$EXTERNALSYM ACTRL_KERNEL_SET_CONTEXT}
ACTRL_KERNEL_TOKEN = ACTRL_PERM_14;
{$EXTERNALSYM ACTRL_KERNEL_TOKEN}
ACTRL_KERNEL_IMPERSONATE = ACTRL_PERM_15;
{$EXTERNALSYM ACTRL_KERNEL_IMPERSONATE}
ACTRL_KERNEL_DIMPERSONATE = ACTRL_PERM_16;
{$EXTERNALSYM ACTRL_KERNEL_DIMPERSONATE}
ACTRL_PRINT_SADMIN = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_PRINT_SADMIN}
ACTRL_PRINT_SLIST = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_PRINT_SLIST}
ACTRL_PRINT_PADMIN = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_PRINT_PADMIN}
ACTRL_PRINT_PUSE = ACTRL_PERM_4;
{$EXTERNALSYM ACTRL_PRINT_PUSE}
ACTRL_PRINT_JADMIN = ACTRL_PERM_5;
{$EXTERNALSYM ACTRL_PRINT_JADMIN}
ACTRL_SVC_GET_INFO = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_SVC_GET_INFO}
ACTRL_SVC_SET_INFO = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_SVC_SET_INFO}
ACTRL_SVC_STATUS = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_SVC_STATUS}
ACTRL_SVC_LIST = ACTRL_PERM_4;
{$EXTERNALSYM ACTRL_SVC_LIST}
ACTRL_SVC_START = ACTRL_PERM_5;
{$EXTERNALSYM ACTRL_SVC_START}
ACTRL_SVC_STOP = ACTRL_PERM_6;
{$EXTERNALSYM ACTRL_SVC_STOP}
ACTRL_SVC_PAUSE = ACTRL_PERM_7;
{$EXTERNALSYM ACTRL_SVC_PAUSE}
ACTRL_SVC_INTERROGATE = ACTRL_PERM_8;
{$EXTERNALSYM ACTRL_SVC_INTERROGATE}
ACTRL_SVC_UCONTROL = ACTRL_PERM_9;
{$EXTERNALSYM ACTRL_SVC_UCONTROL}
ACTRL_REG_QUERY = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_REG_QUERY}
ACTRL_REG_SET = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_REG_SET}
ACTRL_REG_CREATE_CHILD = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_REG_CREATE_CHILD}
ACTRL_REG_LIST = ACTRL_PERM_4;
{$EXTERNALSYM ACTRL_REG_LIST}
ACTRL_REG_NOTIFY = ACTRL_PERM_5;
{$EXTERNALSYM ACTRL_REG_NOTIFY}
ACTRL_REG_LINK = ACTRL_PERM_6;
{$EXTERNALSYM ACTRL_REG_LINK}
ACTRL_WIN_CLIPBRD = ACTRL_PERM_1;
{$EXTERNALSYM ACTRL_WIN_CLIPBRD}
ACTRL_WIN_GLOBAL_ATOMS = ACTRL_PERM_2;
{$EXTERNALSYM ACTRL_WIN_GLOBAL_ATOMS}
ACTRL_WIN_CREATE = ACTRL_PERM_3;
{$EXTERNALSYM ACTRL_WIN_CREATE}
ACTRL_WIN_LIST_DESK = ACTRL_PERM_4;
{$EXTERNALSYM ACTRL_WIN_LIST_DESK}
ACTRL_WIN_LIST = ACTRL_PERM_5;
{$EXTERNALSYM ACTRL_WIN_LIST}
ACTRL_WIN_READ_ATTRIBS = ACTRL_PERM_6;
{$EXTERNALSYM ACTRL_WIN_READ_ATTRIBS}
ACTRL_WIN_WRITE_ATTRIBS = ACTRL_PERM_7;
{$EXTERNALSYM ACTRL_WIN_WRITE_ATTRIBS}
ACTRL_WIN_SCREEN = ACTRL_PERM_8;
{$EXTERNALSYM ACTRL_WIN_SCREEN}
ACTRL_WIN_EXIT = ACTRL_PERM_9;
{$EXTERNALSYM ACTRL_WIN_EXIT}
type
PACTRL_OVERLAPPED = ^ACTRL_OVERLAPPED;
{$EXTERNALSYM PACTRL_OVERLAPPED}
_ACTRL_OVERLAPPED = packed record
//union {
Provider: PVOID;
// ULONG Reserved1;
//};
Reserved2: ULONG;
hEvent: HANDLE;
end;
{$EXTERNALSYM _ACTRL_OVERLAPPED}
ACTRL_OVERLAPPED = _ACTRL_OVERLAPPED;
{$EXTERNALSYM ACTRL_OVERLAPPED}
TActrlOverlapped = ACTRL_OVERLAPPED;
PActrlOverlapped = PACTRL_OVERLAPPED;
PACTRL_ACCESS_INFOA = ^ACTRL_ACCESS_INFOA;
{$EXTERNALSYM PACTRL_ACCESS_INFOA}
_ACTRL_ACCESS_INFOA = packed record
fAccessPermission: ULONG;
lpAccessPermissionName: LPSTR;
end;
{$EXTERNALSYM _ACTRL_ACCESS_INFOA}
ACTRL_ACCESS_INFOA = _ACTRL_ACCESS_INFOA;
{$EXTERNALSYM ACTRL_ACCESS_INFOA}
TActrlAccessInfoA = ACTRL_ACCESS_INFOA;
PActrlAccessInfoA = PACTRL_ACCESS_INFOA;
PACTRL_ACCESS_INFOW = ^ACTRL_ACCESS_INFOW;
{$EXTERNALSYM PACTRL_ACCESS_INFOW}
_ACTRL_ACCESS_INFOW = packed record
fAccessPermission: ULONG;
lpAccessPermissionName: LPWSTR;
end;
{$EXTERNALSYM _ACTRL_ACCESS_INFOW}
ACTRL_ACCESS_INFOW = _ACTRL_ACCESS_INFOW;
{$EXTERNALSYM ACTRL_ACCESS_INFOW}
TActrlAccessInfoW = ACTRL_ACCESS_INFOW;
PActrlAccessInfoW = PACTRL_ACCESS_INFOW;
{$IFDEF UNICODE}
ACTRL_ACCESS_INFO = ACTRL_ACCESS_INFOW;
{$EXTERNALSYM ACTRL_ACCESS_INFO}
PACTRL_ACCESS_INFO = PACTRL_ACCESS_INFOW;
{$EXTERNALSYM PACTRL_ACCESS_INFO}
TActrlAccessInfo = TActrlAccessInfoW;
PActrlAccessInfo = PActrlAccessInfoW;
{$ELSE}
ACTRL_ACCESS_INFO = ACTRL_ACCESS_INFOA;
{$EXTERNALSYM ACTRL_ACCESS_INFO}
PACTRL_ACCESS_INFO = PACTRL_ACCESS_INFOA;
{$EXTERNALSYM PACTRL_ACCESS_INFO}
TActrlAccessInfo = TActrlAccessInfoA;
PActrlAccessInfo = PActrlAccessInfoA;
{$ENDIF}
PACTRL_CONTROL_INFOA = ^ACTRL_CONTROL_INFOA;
{$EXTERNALSYM PACTRL_CONTROL_INFOA}
_ACTRL_CONTROL_INFOA = packed record
lpControlId: LPSTR;
lpControlName: LPSTR;
end;
{$EXTERNALSYM _ACTRL_CONTROL_INFOA}
ACTRL_CONTROL_INFOA = _ACTRL_CONTROL_INFOA;
{$EXTERNALSYM ACTRL_CONTROL_INFOA}
TActrlControlInfoA = ACTRL_CONTROL_INFOA;
PActrlControlInfoA = PACTRL_CONTROL_INFOA;
PACTRL_CONTROL_INFOW = ^ACTRL_CONTROL_INFOW;
{$EXTERNALSYM PACTRL_CONTROL_INFOW}
_ACTRL_CONTROL_INFOW = packed record
lpControlId: LPWSTR;
lpControlName: LPWSTR;
end;
{$EXTERNALSYM _ACTRL_CONTROL_INFOW}
ACTRL_CONTROL_INFOW = _ACTRL_CONTROL_INFOW;
{$EXTERNALSYM ACTRL_CONTROL_INFOW}
TActrlControlInfoW = ACTRL_CONTROL_INFOW;
PActrlControlInfoW = PACTRL_CONTROL_INFOW;
{$IFDEF UNICODE}
ACTRL_CONTROL_INFO = ACTRL_CONTROL_INFOW;
{$EXTERNALSYM ACTRL_CONTROL_INFO}
PACTRL_CONTROL_INFO = PACTRL_CONTROL_INFOW;
{$EXTERNALSYM PACTRL_CONTROL_INFO}
TActrlControlInfo = TActrlControlInfoW;
PActrlControlInfo = PActrlControlInfoW;
{$ELSE}
ACTRL_CONTROL_INFO = ACTRL_CONTROL_INFOA;
{$EXTERNALSYM ACTRL_CONTROL_INFO}
PACTRL_CONTROL_INFO = PACTRL_CONTROL_INFOA;
{$EXTERNALSYM PACTRL_CONTROL_INFO}
TActrlControlInfo = TActrlControlInfoA;
PActrlControlInfo = PActrlControlInfoA;
{$ENDIF}
const
ACTRL_ACCESS_NO_OPTIONS = $00000000;
{$EXTERNALSYM ACTRL_ACCESS_NO_OPTIONS}
ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES = $00000001;
{$EXTERNALSYM ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES}
ProgressInvokeNever = 1; // Never invoke the progress function
{$EXTERNALSYM ProgressInvokeNever}
ProgressInvokeEveryObject = 2; // Invoke for each object
{$EXTERNALSYM ProgressInvokeEveryObject}
ProgressInvokeOnError = 3; // Invoke only for each error case
{$EXTERNALSYM ProgressInvokeOnError}
ProgressCancelOperation = 4; // Stop propagation and return
{$EXTERNALSYM ProgressCancelOperation}
ProgressRetryOperation = 5; // Retry operation on subtree
{$EXTERNALSYM ProgressRetryOperation}
type
PROG_INVOKE_SETTING = DWORD;
{$EXTERNALSYM PROG_INVOKE_SETTING}
PPROG_INVOKE_SETTING = ^PROG_INVOKE_SETTING;
{$EXTERNALSYM PPROG_INVOKE_SETTING}
TProgInvokeSetting = PROG_INVOKE_SETTING;
PProgInvokeSetting = PPROG_INVOKE_SETTING;
//
// Progress Function:
// Caller of tree operation implements this Progress function, then
// passes its function pointer to tree operation.
// Tree operation invokes Progress function to provide progress and error
// information to the caller during the potentially long execution
// of the tree operation. Tree operation provides the name of the object
// last processed and the error status of the operation on that object.
// Tree operation also passes the current InvokeSetting value.
// Caller may change the InvokeSetting value, for example, from "Always"
// to "Only On Error."
//
type
FN_PROGRESS = procedure (pObjectName: LPWSTR; Status: DWORD;
var pInvokeSetting: PROG_INVOKE_SETTING; Args: PVOID; SecuritySet: BOOL); stdcall;
{$EXTERNALSYM FN_PROGRESS}
TFnProgress = FN_PROGRESS;
//
// New Object Type function pointers. TBD.
// To support additional object resource managers generically, the
// resource manager must provide it's own functions for operations
// like:
// GetAncestorAcl(IN ObjName, IN GenerationGap, IN DaclOrSacl?, ...)
// GetAncestorName(...)
// FreeNameStructure(...)
//
type
_FN_OBJECT_MGR_FUNCTIONS = record
Placeholder: ULONG;
end;
{$EXTERNALSYM _FN_OBJECT_MGR_FUNCTIONS}
FN_OBJECT_MGR_FUNCTS = _FN_OBJECT_MGR_FUNCTIONS;
{$EXTERNALSYM FN_OBJECT_MGR_FUNCTS}
PFN_OBJECT_MGR_FUNCTS = ^FN_OBJECT_MGR_FUNCTS;
{$EXTERNALSYM PFN_OBJECT_MGR_FUNCTS}
TFnObjectMgrFuncts = FN_OBJECT_MGR_FUNCTS;
PFnObjectMgrFuncts = PFN_OBJECT_MGR_FUNCTS;
//
// Name of ancestor and number of generations between
// ancestor and inheriting object.
//
// GenerationGap:
// Name of ancestor from which ACE was inherited.
// NULL for explicit ACE.
//
// AncestorName:
// Number of levels (or generations) between the object and the ancestor.
// Parent, gap=1.
// Grandparent, gap=2.
// Set to 0 for explicit ACE on object.
//
type
_INHERITED_FROMA = record
GenerationGap: LONG;
AncestorName: LPSTR;
end;
{$EXTERNALSYM _INHERITED_FROMA}
INHERITED_FROMA = _INHERITED_FROMA;
{$EXTERNALSYM INHERITED_FROMA}
PINHERITED_FROMA = ^INHERITED_FROMA;
{$EXTERNALSYM PINHERITED_FROMA}
TInheritedFromA = INHERITED_FROMA;
PInheritedFromA = PINHERITED_FROMA;
_INHERITED_FROMW = record
GenerationGap: LONG;
AncestorName: LPWSTR;
end;
{$EXTERNALSYM _INHERITED_FROMW}
INHERITED_FROMW = _INHERITED_FROMW;
{$EXTERNALSYM INHERITED_FROMW}
PINHERITED_FROMW = ^INHERITED_FROMW;
{$EXTERNALSYM PINHERITED_FROMW}
TInheritedFromW = INHERITED_FROMW;
PInheritedFromW = PINHERITED_FROMW;
{$IFDEF UNICODE}
INHERITED_FROM = INHERITED_FROMW;
{$EXTERNALSYM INHERITED_FROM}
PINHERITED_FROM = PINHERITED_FROMW;
{$EXTERNALSYM PINHERITED_FROM}
TInheritedFrom = TInheritedFromW;
PInheritedFrom = PInheritedFromW;
{$ELSE}
INHERITED_FROM = INHERITED_FROMA;
{$EXTERNALSYM INHERITED_FROM}
PINHERITED_FROM = PINHERITED_FROMA;
{$EXTERNALSYM PINHERITED_FROM}
TInheritedFrom = TInheritedFromA;
PInheritedFrom = PInheritedFromA;
{$ENDIF}
implementation
uses
JwaWinBase;
function AccFree(hMem: HLOCAL): HLOCAL;
begin
Result := LocalFree(hMem);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -