⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subauth.pas

📁 详细Windows API大全有关知识以及相关问题
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{******************************************************************}
{                                                       	   }
{       Borland Delphi Runtime Library                  	   }
{       Subauthentication package interface unit                   }
{ 								   }
{ Portions created by Microsoft are 				   }
{ Copyright (C) 1995-1999 Microsoft Corporation. 		   }
{ All Rights Reserved. 						   }
{ 								   }
{ The original file is: subauth.h, released June 2000. 	           }
{ The original Pascal code is: SubAuth.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 SubAuth;

{$WEAKPACKAGEUNIT}

{$HPPEMIT ''}
{$HPPEMIT '#include "subauth.h"'}
{$HPPEMIT ''}

{$I WINDEFINES.INC}

interface

uses
  WinType;

type
  SAM_HANDLE = PVOID;
  {$EXTERNALSYM SAM_HANDLE}
  PSAM_HANDLE = ^SAM_HANDLE;
  {$EXTERNALSYM PSAM_HANDLE}

  POLD_LARGE_INTEGER = ^OLD_LARGE_INTEGER;
  {$EXTERNALSYM POLD_LARGE_INTEGER}
  _OLD_LARGE_INTEGER = record
    LowPart: ULONG;
    HighPart: LONG;
  end;
  {$EXTERNALSYM _OLD_LARGE_INTEGER}
  OLD_LARGE_INTEGER = _OLD_LARGE_INTEGER;
  {$EXTERNALSYM OLD_LARGE_INTEGER}
  TOldLargeInteger = OLD_LARGE_INTEGER;
  POldLargeInteger = POLD_LARGE_INTEGER;

//
// User account control flags...
//

const
  USER_ACCOUNT_DISABLED                = ($00000001);
  {$EXTERNALSYM USER_ACCOUNT_DISABLED}
  USER_HOME_DIRECTORY_REQUIRED         = ($00000002);
  {$EXTERNALSYM USER_HOME_DIRECTORY_REQUIRED}
  USER_PASSWORD_NOT_REQUIRED           = ($00000004);
  {$EXTERNALSYM USER_PASSWORD_NOT_REQUIRED}
  USER_TEMP_DUPLICATE_ACCOUNT          = ($00000008);
  {$EXTERNALSYM USER_TEMP_DUPLICATE_ACCOUNT}
  USER_NORMAL_ACCOUNT                  = ($00000010);
  {$EXTERNALSYM USER_NORMAL_ACCOUNT}
  USER_MNS_LOGON_ACCOUNT               = ($00000020);
  {$EXTERNALSYM USER_MNS_LOGON_ACCOUNT}
  USER_INTERDOMAIN_TRUST_ACCOUNT       = ($00000040);
  {$EXTERNALSYM USER_INTERDOMAIN_TRUST_ACCOUNT}
  USER_WORKSTATION_TRUST_ACCOUNT       = ($00000080);
  {$EXTERNALSYM USER_WORKSTATION_TRUST_ACCOUNT}
  USER_SERVER_TRUST_ACCOUNT            = ($00000100);
  {$EXTERNALSYM USER_SERVER_TRUST_ACCOUNT}
  USER_DONT_EXPIRE_PASSWORD            = ($00000200);
  {$EXTERNALSYM USER_DONT_EXPIRE_PASSWORD}
  USER_ACCOUNT_AUTO_LOCKED             = ($00000400);
  {$EXTERNALSYM USER_ACCOUNT_AUTO_LOCKED}
  USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED = ($00000800);
  {$EXTERNALSYM USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED}
  USER_SMARTCARD_REQUIRED              = ($00001000);
  {$EXTERNALSYM USER_SMARTCARD_REQUIRED}
  USER_TRUSTED_FOR_DELEGATION          = ($00002000);
  {$EXTERNALSYM USER_TRUSTED_FOR_DELEGATION}
  USER_NOT_DELEGATED                   = ($00004000);
  {$EXTERNALSYM USER_NOT_DELEGATED}
  USER_USE_DES_KEY_ONLY                = ($00008000);
  {$EXTERNALSYM USER_USE_DES_KEY_ONLY}
  USER_DONT_REQUIRE_PREAUTH            = ($00010000);
  {$EXTERNALSYM USER_DONT_REQUIRE_PREAUTH}
  NEXT_FREE_ACCOUNT_CONTROL_BIT        = (USER_DONT_REQUIRE_PREAUTH shl 1);
  {$EXTERNALSYM NEXT_FREE_ACCOUNT_CONTROL_BIT}

  USER_MACHINE_ACCOUNT_MASK = USER_INTERDOMAIN_TRUST_ACCOUNT or USER_WORKSTATION_TRUST_ACCOUNT or USER_SERVER_TRUST_ACCOUNT;
  {$EXTERNALSYM USER_MACHINE_ACCOUNT_MASK}
  USER_ACCOUNT_TYPE_MASK    = USER_TEMP_DUPLICATE_ACCOUNT or USER_NORMAL_ACCOUNT or USER_MACHINE_ACCOUNT_MASK;
  {$EXTERNALSYM USER_ACCOUNT_TYPE_MASK}

//
// Logon times may be expressed in day, hour, or minute granularity.
//
//              Days per week    = 7
//              Hours per week   = 168
//              Minutes per week = 10080
//

  SAM_DAYS_PER_WEEK    = (7);
  {$EXTERNALSYM SAM_DAYS_PER_WEEK}
  SAM_HOURS_PER_WEEK   = (24 * SAM_DAYS_PER_WEEK);
  {$EXTERNALSYM SAM_HOURS_PER_WEEK}
  SAM_MINUTES_PER_WEEK = (60 * SAM_HOURS_PER_WEEK);
  {$EXTERNALSYM SAM_MINUTES_PER_WEEK}

type
  PLOGON_HOURS = ^LOGON_HOURS;
  {$EXTERNALSYM PLOGON_HOURS}
  _LOGON_HOURS = record
    UnitsPerWeek: USHORT;
    //
    // UnitsPerWeek is the number of equal length time units the week is
    // divided into.  This value is used to compute the length of the bit
    // string in logon_hours.  Must be less than or equal to
    // SAM_UNITS_PER_WEEK (10080) for this release.
    //
    // LogonHours is a bit map of valid logon times.  Each bit represents
    // a unique division in a week.  The largest bit map supported is 1260
    // bytes (10080 bits), which represents minutes per week.  In this case
    // the first bit (bit 0, byte 0) is Sunday, 00:00:00 - 00-00:59; bit 1,
    // byte 0 is Sunday, 00:01:00 - 00:01:59, etc.  A NULL pointer means
    // DONT_CHANGE for SamSetInformationUser() calls.
    //
    LogonHours: PUCHAR;
  end;
  {$EXTERNALSYM _LOGON_HOURS}
  LOGON_HOURS = _LOGON_HOURS;
  {$EXTERNALSYM LOGON_HOURS}
  TLogonHours = LOGON_HOURS;
  PLogonHours = PLOGON_HOURS;

  PSR_SECURITY_DESCRIPTOR = ^SR_SECURITY_DESCRIPTOR;
  {$EXTERNALSYM PSR_SECURITY_DESCRIPTOR}
  _SR_SECURITY_DESCRIPTOR = record
    Length: ULONG;
    SecurityDescriptor: PUCHAR;
  end;
  {$EXTERNALSYM _SR_SECURITY_DESCRIPTOR}
  SR_SECURITY_DESCRIPTOR = _SR_SECURITY_DESCRIPTOR;
  {$EXTERNALSYM SR_SECURITY_DESCRIPTOR}
  TSrSecurityDescriptor = SR_SECURITY_DESCRIPTOR;
  PSrSecurityDescriptor = PSR_SECURITY_DESCRIPTOR;

// #include "pshpack4.h"

  PUSER_ALL_INFORMATION = ^USER_ALL_INFORMATION;
  {$EXTERNALSYM PUSER_ALL_INFORMATION}
  _USER_ALL_INFORMATION = record
    LastLogon: LARGE_INTEGER;
    LastLogoff: LARGE_INTEGER;
    PasswordLastSet: LARGE_INTEGER;
    AccountExpires: LARGE_INTEGER;
    PasswordCanChange: LARGE_INTEGER;
    PasswordMustChange: LARGE_INTEGER;
    UserName: UNICODE_STRING;
    FullName: UNICODE_STRING;
    HomeDirectory: UNICODE_STRING;
    HomeDirectoryDrive: UNICODE_STRING;
    ScriptPath: UNICODE_STRING;
    ProfilePath: UNICODE_STRING;
    AdminComment: UNICODE_STRING;
    WorkStations: UNICODE_STRING;
    UserComment: UNICODE_STRING;
    Parameters: UNICODE_STRING;
    LmPassword: UNICODE_STRING;
    NtPassword: UNICODE_STRING;
    PrivateData: UNICODE_STRING;
    SecurityDescriptor: SR_SECURITY_DESCRIPTOR;
    UserId: ULONG;
    PrimaryGroupId: ULONG;
    UserAccountControl: ULONG;
    WhichFields: ULONG;
    LogonHours: LOGON_HOURS;
    BadPasswordCount: USHORT;
    LogonCount: USHORT;
    CountryCode: USHORT;
    CodePage: USHORT;
    LmPasswordPresent: ByteBool;
    NtPasswordPresent: ByteBool;
    PasswordExpired: ByteBool;
    PrivateDataSensitive: ByteBool;
  end;
  {$EXTERNALSYM _USER_ALL_INFORMATION}
  USER_ALL_INFORMATION = _USER_ALL_INFORMATION;
  {$EXTERNALSYM USER_ALL_INFORMATION}
  TUserAllInformation = USER_ALL_INFORMATION;
  PUserAllInformation = PUSER_ALL_INFORMATION;

// #include "poppack.h"

const
  USER_ALL_PARAMETERS = $00200000;
  {$EXTERNALSYM USER_ALL_PARAMETERS}

  CLEAR_BLOCK_LENGTH = 8;
  {$EXTERNALSYM CLEAR_BLOCK_LENGTH}

type
  PCLEAR_BLOCK = ^CLEAR_BLOCK;
  {$EXTERNALSYM PCLEAR_BLOCK}
  _CLEAR_BLOCK = record
    data: array [0..CLEAR_BLOCK_LENGTH - 1] of CHAR;
  end;
  {$EXTERNALSYM _CLEAR_BLOCK}
  CLEAR_BLOCK = _CLEAR_BLOCK;
  {$EXTERNALSYM CLEAR_BLOCK}
  TClearBlock = CLEAR_BLOCK;
  PClearBlock = PCLEAR_BLOCK;

const
  CYPHER_BLOCK_LENGTH = 8;
  {$EXTERNALSYM CYPHER_BLOCK_LENGTH}

type
  PCYPHER_BLOCK = ^CYPHER_BLOCK;
  {$EXTERNALSYM PCYPHER_BLOCK}
  _CYPHER_BLOCK = record
    data: array [0..CYPHER_BLOCK_LENGTH - 1] of CHAR;
  end;
  {$EXTERNALSYM _CYPHER_BLOCK}
  CYPHER_BLOCK = _CYPHER_BLOCK;
  {$EXTERNALSYM CYPHER_BLOCK}
  TCypherBlock = CYPHER_BLOCK;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -