未声明的标识符:Delphi 5中的TExplicitAccess

未声明的标识符:Delphi 5中的TExplicitAccess,delphi,delphi-5,undeclared-identifier,Delphi,Delphi 5,Undeclared Identifier,我试图在Delphi 5中更改文件夹的权限,以便每个人都可以对其进行修改访问,但是,我在web上找到的每个指南都使用TExplicitAccess类型,并且在Delphi 5中显示为未声明的标识符。如果有人知道原因,我很想知道 顺便说一句,升级到新的Delphi版本不是一个选项,我需要能够在Delphi5中做到这一点 编辑:如下所述,必须使用显式访问才能使其工作。谢谢 即使是最新版本的Delphi也没有在Windows标题翻译中声明该类型。您的示例代码可能正在使用第三方头翻译。或者,为了方便起见

我试图在Delphi 5中更改文件夹的权限,以便每个人都可以对其进行修改访问,但是,我在web上找到的每个指南都使用
TExplicitAccess
类型,并且在Delphi 5中显示为未声明的标识符。如果有人知道原因,我很想知道

顺便说一句,升级到新的Delphi版本不是一个选项,我需要能够在Delphi5中做到这一点


编辑:如下所述,必须使用显式访问才能使其工作。谢谢

即使是最新版本的Delphi也没有在Windows标题翻译中声明该类型。您的示例代码可能正在使用第三方头翻译。或者,为了方便起见,示例代码定义了一个别名。有关更多详细信息,请参阅示例代码

在Delphi5中,类型在
AccCtrl
单元中声明。像这样:

{ 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. }

  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}
  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}
  PEXPLICIT_ACCESS_ = PEXPLICIT_ACCESS_A;
  EXPLICIT_ACCESSA = EXPLICIT_ACCESS_A;
  {$EXTERNALSYM EXPLICIT_ACCESSA}
  EXPLICIT_ACCESSW = EXPLICIT_ACCESS_W;
  {$EXTERNALSYM EXPLICIT_ACCESSW}
  EXPLICIT_ACCESS = EXPLICIT_ACCESSA;
  PEXPLICIT_ACCESSA = ^EXPLICIT_ACCESS_A;
  {$EXTERNALSYM PEXPLICIT_ACCESSA}
  PEXPLICIT_ACCESSW = ^EXPLICIT_ACCESS_W;
  {$EXTERNALSYM PEXPLICIT_ACCESSW}
  PEXPLICIT_ACCESS = PEXPLICIT_ACCESSA;
相关结构为
EXPLICIT\u ACCESS\u A
EXPLICIT\u ACCESS\u W
。如果您希望定义一个方便的别名,可以这样做:

type
  TExplicitAccess = EXPLICIT_ACCESS_;
然后在
AclAPI
单元中有使用此类型的各种函数

请记住,这些是Windows API类型和函数,它们的文档由Microsoft在MSDN上提供