📄 accctrl.pas
字号:
INHERITED_PARENT = $10000000;
{$EXTERNALSYM INHERITED_PARENT}
INHERITED_GRANDPARENT = $20000000;
{$EXTERNALSYM INHERITED_GRANDPARENT}
//
// Definition: EXPLICIT_ACCESS
// This structure is used to pass access control entry information into and out
// of the system using the API defined in this document.
// grfAccessPermissions - This contains the access permissions to assign for the
// trustee. It is in the form of an NT access mask.
// grfAccessMode - This field defines how the permissions are to be applied for
// the trustee.
// grfInheritance - For containers, this field defines how the access control
// entry is/(is requested) to be inherited on
// objects/sub-containers created within the container.
// Trustee - This field contains the definition of the trustee account the
// explicit access applies to.
//
type
PEXPLICIT_ACCESS_A = ^EXPLICIT_ACCESS_A;
{$EXTERNALSYM PEXPLICIT_ACCESS_A}
_EXPLICIT_ACCESS_A = packed record
grfAccessPermissions: DWORD;
grfAccessMode: ACCESS_MODE;
grfInheritance: DWORD;
Trustee: TRUSTEE_A;
end;
{$EXTERNALSYM _EXPLICIT_ACCESS_A}
EXPLICIT_ACCESS_A = _EXPLICIT_ACCESS_A;
{$EXTERNALSYM EXPLICIT_ACCESS_A}
EXPLICIT_ACCESSA = EXPLICIT_ACCESS_A;
{$EXTERNALSYM EXPLICIT_ACCESSA}
PEXPLICIT_ACCESSA = PEXPLICIT_ACCESS_A;
{$EXTERNALSYM PEXPLICIT_ACCESSA}
TExplicitAccessA = EXPLICIT_ACCESS_A;
PExplicitAccessA = PEXPLICIT_ACCESS_A;
PEXPLICIT_ACCESS_W = ^EXPLICIT_ACCESS_W;
{$EXTERNALSYM PEXPLICIT_ACCESS_W}
_EXPLICIT_ACCESS_W = packed record
grfAccessPermissions: DWORD;
grfAccessMode: ACCESS_MODE;
grfInheritance: DWORD;
Trustee: TRUSTEE_W;
end;
{$EXTERNALSYM _EXPLICIT_ACCESS_W}
EXPLICIT_ACCESS_W = _EXPLICIT_ACCESS_W;
{$EXTERNALSYM EXPLICIT_ACCESS_W}
EXPLICIT_ACCESSW = EXPLICIT_ACCESS_W;
{$EXTERNALSYM EXPLICIT_ACCESSW}
PEXPLICIT_ACCESSW = PEXPLICIT_ACCESS_W;
{$EXTERNALSYM PEXPLICIT_ACCESSW}
TExplicitAccessW = EXPLICIT_ACCESS_W;
PExplicitAccessW = PEXPLICIT_ACCESS_W;
{$IFDEF UNICODE}
EXPLICIT_ACCESS_ = EXPLICIT_ACCESS_W;
{$EXTERNALSYM EXPLICIT_ACCESS_}
PEXPLICIT_ACCESS_ = PEXPLICIT_ACCESS_W;
{$EXTERNALSYM PEXPLICIT_ACCESS_}
EXPLICIT_ACCESS = EXPLICIT_ACCESSW;
{$EXTERNALSYM EXPLICIT_ACCESS}
PEXPLICIT_ACCESS = PEXPLICIT_ACCESSW;
{$EXTERNALSYM PEXPLICIT_ACCESS}
TExplicitAccess = TExplicitAccessW;
PExplicitAccess = PExplicitAccessW;
{$ELSE}
EXPLICIT_ACCESS_ = EXPLICIT_ACCESS_A;
{$EXTERNALSYM EXPLICIT_ACCESS_}
PEXPLICIT_ACCESS_ = PEXPLICIT_ACCESS_A;
{$EXTERNALSYM PEXPLICIT_ACCESS_}
EXPLICIT_ACCESS = EXPLICIT_ACCESSA;
{$EXTERNALSYM EXPLICIT_ACCESS}
PEXPLICIT_ACCESS = PEXPLICIT_ACCESSA;
{$EXTERNALSYM PEXPLICIT_ACCESS}
TExplicitAccess = TExplicitAccessA;
PExplicitAccess = PExplicitAccessA;
{$ENDIF}
//------------------------------------------------------------------------------
// NT5 APIs
//------------------------------------------------------------------------------
//
// Default provider
//
const
ACCCTRL_DEFAULT_PROVIDERA = 'Windows NT Access Provider';
{$EXTERNALSYM ACCCTRL_DEFAULT_PROVIDERA}
ACCCTRL_DEFAULT_PROVIDERW = 'Windows NT Access Provider';
{$EXTERNALSYM ACCCTRL_DEFAULT_PROVIDERW}
{$IFDEF UNICODE}
ACCCTRL_DEFAULT_PROVIDER = ACCCTRL_DEFAULT_PROVIDERW;
{$EXTERNALSYM ACCCTRL_DEFAULT_PROVIDER}
{$ELSE}
ACCCTRL_DEFAULT_PROVIDER = ACCCTRL_DEFAULT_PROVIDERA;
{$EXTERNALSYM ACCCTRL_DEFAULT_PROVIDER}
{$ENDIF}
//
// Access rights
//
type
ACCESS_RIGHTS = ULONG;
{$EXTERNALSYM ACCESS_RIGHTS}
PACCESS_RIGHTS = ^ACCESS_RIGHTS;
{$EXTERNALSYM PACCESS_RIGHTS}
//
// Inheritance flags
//
INHERIT_FLAGS = ULONG;
{$EXTERNALSYM INHERIT_FLAGS}
PINHERIT_FLAGS = ^INHERIT_FLAGS;
{$EXTERNALSYM PINHERIT_FLAGS}
//
// Access / Audit structures
//
PACTRL_ACCESS_ENTRYA = ^ACTRL_ACCESS_ENTRYA;
{$EXTERNALSYM PACTRL_ACCESS_ENTRYA}
_ACTRL_ACCESS_ENTRYA = packed record
Trustee: TRUSTEE_A;
fAccessFlags: ULONG;
Access: ACCESS_RIGHTS;
ProvSpecificAccess: ACCESS_RIGHTS;
Inheritance: INHERIT_FLAGS;
lpInheritProperty: LPSTR;
end;
{$EXTERNALSYM _ACTRL_ACCESS_ENTRYA}
ACTRL_ACCESS_ENTRYA = _ACTRL_ACCESS_ENTRYA;
{$EXTERNALSYM ACTRL_ACCESS_ENTRYA}
TActrlAccessEntryA = ACTRL_ACCESS_ENTRYA;
PActrlAccessEntryA = PACTRL_ACCESS_ENTRYA;
//
// Access / Audit structures
//
PACTRL_ACCESS_ENTRYW = ^ACTRL_ACCESS_ENTRYW;
{$EXTERNALSYM PACTRL_ACCESS_ENTRYW}
_ACTRL_ACCESS_ENTRYW = packed record
Trustee: TRUSTEE_W;
fAccessFlags: ULONG;
Access: ACCESS_RIGHTS;
ProvSpecificAccess: ACCESS_RIGHTS;
Inheritance: INHERIT_FLAGS;
lpInheritProperty: LPWSTR;
end;
{$EXTERNALSYM _ACTRL_ACCESS_ENTRYW}
ACTRL_ACCESS_ENTRYW = _ACTRL_ACCESS_ENTRYW;
{$EXTERNALSYM ACTRL_ACCESS_ENTRYW}
TActrlAccessEntryW = ACTRL_ACCESS_ENTRYW;
PActrlAccessEntryW = PACTRL_ACCESS_ENTRYW;
{$IFDEF UNICODE}
ACTRL_ACCESS_ENTRY = ACTRL_ACCESS_ENTRYW;
{$EXTERNALSYM ACTRL_ACCESS_ENTRY}
PACTRL_ACCESS_ENTRY = PACTRL_ACCESS_ENTRYW;
{$EXTERNALSYM PACTRL_ACCESS_ENTRY}
TActrlAccessEntry = TActrlAccessEntryW;
PActrlAccessEntry = PActrlAccessEntryW;
{$ELSE}
ACTRL_ACCESS_ENTRY = ACTRL_ACCESS_ENTRYA;
{$EXTERNALSYM ACTRL_ACCESS_ENTRY}
PACTRL_ACCESS_ENTRY = PACTRL_ACCESS_ENTRYA;
{$EXTERNALSYM PACTRL_ACCESS_ENTRY}
TActrlAccessEntry = TActrlAccessEntryA;
PActrlAccessEntry = PActrlAccessEntryA;
{$ENDIF}
PACTRL_ACCESS_ENTRY_LISTA = ^ACTRL_ACCESS_ENTRY_LISTA;
{$EXTERNALSYM PACTRL_ACCESS_ENTRY_LISTA}
_ACTRL_ACCESS_ENTRY_LISTA = packed record
cEntries: ULONG;
pAccessList: PACTRL_ACCESS_ENTRYA;
end;
{$EXTERNALSYM _ACTRL_ACCESS_ENTRY_LISTA}
ACTRL_ACCESS_ENTRY_LISTA = _ACTRL_ACCESS_ENTRY_LISTA;
{$EXTERNALSYM ACTRL_ACCESS_ENTRY_LISTA}
TActrlAccessEntryListA = ACTRL_ACCESS_ENTRY_LISTA;
PActrlAccessEntryListA = PACTRL_ACCESS_ENTRY_LISTA;
PACTRL_ACCESS_ENTRY_LISTW = ^ACTRL_ACCESS_ENTRY_LISTW;
{$EXTERNALSYM PACTRL_ACCESS_ENTRY_LISTW}
_ACTRL_ACCESS_ENTRY_LISTW = packed record
cEntries: ULONG;
pAccessList: PACTRL_ACCESS_ENTRYW;
end;
{$EXTERNALSYM _ACTRL_ACCESS_ENTRY_LISTW}
ACTRL_ACCESS_ENTRY_LISTW = _ACTRL_ACCESS_ENTRY_LISTW;
{$EXTERNALSYM ACTRL_ACCESS_ENTRY_LISTW}
TActrlAccessEntryListW = ACTRL_ACCESS_ENTRY_LISTW;
PActrlAccessEntryListW = PACTRL_ACCESS_ENTRY_LISTW;
{$IFDEF UNICODE}
ACTRL_ACCESS_ENTRY_LIST = ACTRL_ACCESS_ENTRY_LISTW;
{$EXTERNALSYM ACTRL_ACCESS_ENTRY_LIST}
PACTRL_ACCESS_ENTRY_LIST = PACTRL_ACCESS_ENTRY_LISTW;
{$EXTERNALSYM PACTRL_ACCESS_ENTRY_LIST}
TActrlAccessEntryList = TActrlAccessEntryListW;
PActrlAccessEntryList = PActrlAccessEntryListW;
{$ELSE}
ACTRL_ACCESS_ENTRY_LIST = ACTRL_ACCESS_ENTRY_LISTA;
{$EXTERNALSYM ACTRL_ACCESS_ENTRY_LIST}
PACTRL_ACCESS_ENTRY_LIST = PACTRL_ACCESS_ENTRY_LISTA;
{$EXTERNALSYM PACTRL_ACCESS_ENTRY_LIST}
TActrlAccessEntryList = TActrlAccessEntryListA;
PActrlAccessEntryList = PActrlAccessEntryListA;
{$ENDIF}
PACTRL_PROPERTY_ENTRYA = ^ACTRL_PROPERTY_ENTRYA;
{$EXTERNALSYM PACTRL_PROPERTY_ENTRYA}
_ACTRL_PROPERTY_ENTRYA = packed record
lpProperty: LPSTR;
pAccessEntryList: PACTRL_ACCESS_ENTRY_LISTA;
fListFlags: ULONG;
end;
{$EXTERNALSYM _ACTRL_PROPERTY_ENTRYA}
ACTRL_PROPERTY_ENTRYA = _ACTRL_PROPERTY_ENTRYA;
{$EXTERNALSYM ACTRL_PROPERTY_ENTRYA}
TActrlPropertyEntryA = ACTRL_PROPERTY_ENTRYA;
PActrlPropertyEntryA = PACTRL_PROPERTY_ENTRYA;
PACTRL_PROPERTY_ENTRYW = ^ACTRL_PROPERTY_ENTRYW;
{$EXTERNALSYM PACTRL_PROPERTY_ENTRYW}
_ACTRL_PROPERTY_ENTRYW = packed record
lpProperty: LPWSTR;
pAccessEntryList: PACTRL_ACCESS_ENTRY_LISTW;
fListFlags: ULONG;
end;
{$EXTERNALSYM _ACTRL_PROPERTY_ENTRYW}
ACTRL_PROPERTY_ENTRYW = _ACTRL_PROPERTY_ENTRYW;
{$EXTERNALSYM ACTRL_PROPERTY_ENTRYW}
TActrlPropertyEntryW = ACTRL_PROPERTY_ENTRYW;
PActrlPropertyEntryW = PACTRL_PROPERTY_ENTRYW;
{$IFDEF UNICODE}
ACTRL_PROPERTY_ENTRY = ACTRL_PROPERTY_ENTRYW;
{$EXTERNALSYM ACTRL_PROPERTY_ENTRY}
PACTRL_PROPERTY_ENTRY = PACTRL_PROPERTY_ENTRYW;
{$EXTERNALSYM PACTRL_PROPERTY_ENTRY}
TActrlPropertyEntry = TActrlPropertyEntryW;
PActrlPropertyEntry = PActrlPropertyEntryW;
{$ELSE}
ACTRL_PROPERTY_ENTRY = ACTRL_PROPERTY_ENTRYA;
{$EXTERNALSYM ACTRL_PROPERTY_ENTRY}
PACTRL_PROPERTY_ENTRY = PACTRL_PROPERTY_ENTRYA;
{$EXTERNALSYM PACTRL_PROPERTY_ENTRY}
TActrlPropertyEntry = TActrlPropertyEntryA;
PActrlPropertyEntry = PActrlPropertyEntryA;
{$ENDIF}
PActrlAlistA = ^TActrlAlistA;
_ACTRL_ALISTA = packed record
cEntries: ULONG;
pPropertyAccessList: PACTRL_PROPERTY_ENTRYA;
end;
{$EXTERNALSYM _ACTRL_ALISTA}
ACTRL_ACCESSA = _ACTRL_ALISTA;
{$EXTERNALSYM ACTRL_ACCESSA}
PACTRL_ACCESSA = ^_ACTRL_ALISTA;
{$EXTERNALSYM PACTRL_ACCESSA}
ACTRL_AUDITA = ACTRL_ACCESSA;
{$EXTERNALSYM ACTRL_AUDITA}
PACTRL_AUDITA = ^ACTRL_AUDITA;
{$EXTERNALSYM PACTRL_AUDITA}
TActrlAlistA = _ACTRL_ALISTA;
PActrlAlistW = ^TActrlAlistW;
_ACTRL_ALISTW = packed record
cEntries: ULONG;
pPropertyAccessList: PACTRL_PROPERTY_ENTRYW;
end;
{$EXTERNALSYM _ACTRL_ALISTW}
ACTRL_ACCESSW = _ACTRL_ALISTW;
{$EXTERNALSYM ACTRL_ACCESSW}
PACTRL_ACCESSW = ^_ACTRL_ALISTW;
{$EXTERNALSYM PACTRL_ACCESSW}
ACTRL_AUDITW = ACTRL_ACCESSW;
{$EXTERNALSYM ACTRL_AUDITW}
PACTRL_AUDITW = ^ACTRL_AUDITW;
{$EXTERNALSYM PACTRL_AUDITW}
TActrlAlistW = _ACTRL_ALISTW;
{$IFDEF UNICODE}
ACTRL_ACCESS = ACTRL_ACCESSW;
{$EXTERNALSYM ACTRL_ACCESS}
PACTRL_ACCESS = PACTRL_ACCESSW;
{$EXTERNALSYM PACTRL_ACCESS}
ACTRL_AUDIT = ACTRL_AUDITW;
{$EXTERNALSYM ACTRL_AUDIT}
PACTRL_AUDIT = PACTRL_AUDITW;
{$EXTERNALSYM PACTRL_AUDIT}
TActrlAlist = TActrlAlistW;
PActrlAlist = PActrlAlistW;
{$ELSE}
ACTRL_ACCESS = ACTRL_ACCESSA;
{$EXTERNALSYM ACTRL_ACCESS}
PACTRL_ACCESS = PACTRL_ACCESSA;
{$EXTERNALSYM PACTRL_ACCESS}
ACTRL_AUDIT = ACTRL_AUDITA;
{$EXTERNALSYM ACTRL_AUDIT}
PACTRL_AUDIT = PACTRL_AUDITA;
{$EXTERNALSYM PACTRL_AUDIT}
TActrlAlist = TActrlAlistA;
PActrlAlist = PActrlAlistA;
{$ENDIF}
//
// TRUSTEE_ACCESS flags
//
const
TRUSTEE_ACCESS_ALLOWED = $00000001;
{$EXTERNALSYM TRUSTEE_ACCESS_ALLOWED}
TRUSTEE_ACCESS_READ = $00000002;
{$EXTERNALSYM TRUSTEE_ACCESS_READ}
TRUSTEE_ACCESS_WRITE = $00000004;
{$EXTERNALSYM TRUSTEE_ACCESS_WRITE}
TRUSTEE_ACCESS_EXPLICIT = $00000001;
{$EXTERNALSYM TRUSTEE_ACCESS_EXPLICIT}
TRUSTEE_ACCESS_READ_WRITE = TRUSTEE_ACCESS_READ or TRUSTEE_ACCESS_WRITE;
{$EXTERNALSYM TRUSTEE_ACCESS_READ_WRITE}
TRUSTEE_ACCESS_ALL = DWORD($FFFFFFFF);
{$EXTERNALSYM TRUSTEE_ACCESS_ALL}
type
PTRUSTEE_ACCESSA = ^TRUSTEE_ACCESSA;
{$EXTERNALSYM PTRUSTEE_ACCESSA}
_TRUSTEE_ACCESSA = packed record
lpProperty: LPSTR;
Access: ACCESS_RIGHTS;
fAccessFlags: ULONG;
fReturnedAccess: ULONG;
end;
{$EXTERNALSYM _TRUSTEE_ACCESSA}
TRUSTEE_ACCESSA = _TRUSTEE_ACCESSA;
{$EXTERNALSYM TRUSTEE_ACCESSA}
TTrusteeAccessA = TRUSTEE_ACCESSA;
PTrusteeAccessA = PTRUSTEE_ACCESSA;
PTRUSTEE_ACCESSW = ^TRUSTEE_ACCESSW;
{$EXTERNALSYM PTRUSTEE_ACCESSW}
_TRUSTEE_ACCESSW = packed record
lpProperty: LPWSTR;
Access: ACCESS_RIGHTS;
fAccessFlags: ULONG;
fReturnedAccess: ULONG;
end;
{$EXTERNALSYM _TRUSTEE_ACCESSW}
TRUSTEE_ACCESSW = _TRUSTEE_ACCESSW;
{$EXTERNALSYM TRUSTEE_ACCESSW}
TTrusteeAccessW = TRUSTEE_ACCESSW;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -