📄 jwawincred.pas
字号:
DnsTreeName: LPWSTR;
PackageName: LPWSTR;
Flags: ULONG;
CredTypeCount: DWORD;
CredTypes: LPDWORD;
end;
{$EXTERNALSYM _CREDENTIAL_TARGET_INFORMATIONW}
CREDENTIAL_TARGET_INFORMATIONW = _CREDENTIAL_TARGET_INFORMATIONW;
{$EXTERNALSYM CREDENTIAL_TARGET_INFORMATIONW}
TCredentialTargetInformationW = CREDENTIAL_TARGET_INFORMATIONW;
PCredentialTargetInformationW = PCREDENTIAL_TARGET_INFORMATIONW;
{$IFDEF UNICODE}
CREDENTIAL_TARGET_INFORMATION = CREDENTIAL_TARGET_INFORMATIONW;
{$EXTERNALSYM CREDENTIAL_TARGET_INFORMATION}
PCREDENTIAL_TARGET_INFORMATION = PCREDENTIAL_TARGET_INFORMATIONW;
{$EXTERNALSYM PCREDENTIAL_TARGET_INFORMATION}
TCredentialTargetInformation = TCredentialTargetInformationW;
PCredentialTargetInformation = PCredentialTargetInformationW;
{$ELSE}
CREDENTIAL_TARGET_INFORMATION = CREDENTIAL_TARGET_INFORMATIONA;
{$EXTERNALSYM CREDENTIAL_TARGET_INFORMATION}
PCREDENTIAL_TARGET_INFORMATION = PCREDENTIAL_TARGET_INFORMATIONA;
{$EXTERNALSYM PCREDENTIAL_TARGET_INFORMATION}
TCredentialTargetInformation = TCredentialTargetInformationA;
PCredentialTargetInformation = PCredentialTargetInformationA;
{$ENDIF}
//
// Certificate credential information
//
// The cbSize should be the size of the structure, sizeof(CERT_CREDENTIAL_INFO),
// rgbHashofCert is the hash of the cert which is to be used as the credential.
//
const
CERT_HASH_LENGTH = 20; // SHA1 hashes are used for cert hashes
{$EXTERNALSYM CERT_HASH_LENGTH}
type
PCERT_CREDENTIAL_INFO = ^CERT_CREDENTIAL_INFO;
{$EXTERNALSYM PCERT_CREDENTIAL_INFO}
_CERT_CREDENTIAL_INFO = record
cbSize: ULONG;
rgbHashOfCert: array [0..CERT_HASH_LENGTH - 1] of UCHAR;
end;
{$EXTERNALSYM _CERT_CREDENTIAL_INFO}
CERT_CREDENTIAL_INFO = _CERT_CREDENTIAL_INFO;
{$EXTERNALSYM CERT_CREDENTIAL_INFO}
TCertCredentialInfo = CERT_CREDENTIAL_INFO;
PCertCredentialInfo = PCERT_CREDENTIAL_INFO;
//
// Username Target credential information
//
// This credential can be pass to LsaLogonUser to ask it to find a credential with a
// TargetName of UserName.
//
PUSERNAME_TARGET_CREDENTIAL_INFO = ^USERNAME_TARGET_CREDENTIAL_INFO;
{$EXTERNALSYM PUSERNAME_TARGET_CREDENTIAL_INFO}
_USERNAME_TARGET_CREDENTIAL_INFO = record
UserName: LPWSTR;
end;
{$EXTERNALSYM _USERNAME_TARGET_CREDENTIAL_INFO}
USERNAME_TARGET_CREDENTIAL_INFO = _USERNAME_TARGET_CREDENTIAL_INFO;
{$EXTERNALSYM USERNAME_TARGET_CREDENTIAL_INFO}
TUsernameTargetCredentialInfo = USERNAME_TARGET_CREDENTIAL_INFO;
PUsernameTargetCredentialInfo = PUSERNAME_TARGET_CREDENTIAL_INFO;
//
// Credential type for credential marshaling routines
//
_CRED_MARSHAL_TYPE = DWORD;
{$EXTERNALSYM _CRED_MARSHAL_TYPE}
CRED_MARSHAL_TYPE = _CRED_MARSHAL_TYPE;
{$EXTERNALSYM CRED_MARSHAL_TYPE}
PCRED_MARSHAL_TYPE = ^CRED_MARSHAL_TYPE;
{$EXTERNALSYM PCRED_MARSHAL_TYPE}
TCredMarshalType = CRED_MARSHAL_TYPE;
PCredMarshalType = PCRED_MARSHAL_TYPE;
const
CertCredential = 1;
{$EXTERNALSYM CertCredential}
UsernameTargetCredential = 2;
{$EXTERNALSYM UsernameTargetCredential}
//
// Credential UI info
//
type
PCREDUI_INFOA = ^CREDUI_INFOA;
{$EXTERNALSYM PCREDUI_INFOA}
_CREDUI_INFOA = record
cbSize: DWORD;
hwndParent: HWND;
pszMessageText: PCSTR;
pszCaptionText: PCSTR;
hbmBanner: HBITMAP;
end;
{$EXTERNALSYM _CREDUI_INFOA}
CREDUI_INFOA = _CREDUI_INFOA;
{$EXTERNALSYM CREDUI_INFOA}
TCredUIInfoA = CREDUI_INFOA;
PCredUIInfoA = PCREDUI_INFOA;
PCREDUI_INFOW = ^CREDUI_INFOW;
{$EXTERNALSYM PCREDUI_INFOW}
_CREDUI_INFOW = record
cbSize: DWORD;
hwndParent: HWND;
pszMessageText: LPCWSTR;
pszCaptionText: LPCWSTR;
hbmBanner: HBITMAP;
end;
{$EXTERNALSYM _CREDUI_INFOW}
CREDUI_INFOW = _CREDUI_INFOW;
{$EXTERNALSYM CREDUI_INFOW}
TCredUIInfoW = CREDUI_INFOW;
PCredUIInfoW = PCREDUI_INFOW;
{$IFDEF UNICODE}
CREDUI_INFO = CREDUI_INFOW;
{$EXTERNALSYM CREDUI_INFO}
PCREDUI_INFO = PCREDUI_INFOW;
{$EXTERNALSYM PCREDUI_INFO}
TCredUIInfo = TCredUIInfoW;
PCredUIInfo = PCredUIInfoW;
{$ELSE}
CREDUI_INFO = CREDUI_INFOA;
{$EXTERNALSYM CREDUI_INFO}
PCREDUI_INFO = PCREDUI_INFOA;
{$EXTERNALSYM PCREDUI_INFO}
TCredUIInfo = TCredUIInfoA;
PCredUIInfo = PCredUIInfoA;
{$ENDIF}
//-----------------------------------------------------------------------------
// Values
//-----------------------------------------------------------------------------
// String length limits:
const
CREDUI_MAX_MESSAGE_LENGTH = 32767;
{$EXTERNALSYM CREDUI_MAX_MESSAGE_LENGTH}
CREDUI_MAX_CAPTION_LENGTH = 128;
{$EXTERNALSYM CREDUI_MAX_CAPTION_LENGTH}
CREDUI_MAX_GENERIC_TARGET_LENGTH = CRED_MAX_GENERIC_TARGET_NAME_LENGTH;
{$EXTERNALSYM CREDUI_MAX_GENERIC_TARGET_LENGTH}
CREDUI_MAX_DOMAIN_TARGET_LENGTH = CRED_MAX_DOMAIN_TARGET_NAME_LENGTH;
{$EXTERNALSYM CREDUI_MAX_DOMAIN_TARGET_LENGTH}
CREDUI_MAX_USERNAME_LENGTH = CRED_MAX_USERNAME_LENGTH;
{$EXTERNALSYM CREDUI_MAX_USERNAME_LENGTH}
CREDUI_MAX_PASSWORD_LENGTH = (CRED_MAX_CREDENTIAL_BLOB_SIZE div 2);
{$EXTERNALSYM CREDUI_MAX_PASSWORD_LENGTH}
//
// Flags for CredUIPromptForCredentials and/or CredUICmdLinePromptForCredentials
//
CREDUI_FLAGS_INCORRECT_PASSWORD = $00001; // indicates the username is valid, but password is not
{$EXTERNALSYM CREDUI_FLAGS_INCORRECT_PASSWORD}
CREDUI_FLAGS_DO_NOT_PERSIST = $00002; // Do not show "Save" checkbox, and do not persist credentials
{$EXTERNALSYM CREDUI_FLAGS_DO_NOT_PERSIST}
CREDUI_FLAGS_REQUEST_ADMINISTRATOR = $00004; // Populate list box with admin accounts
{$EXTERNALSYM CREDUI_FLAGS_REQUEST_ADMINISTRATOR}
CREDUI_FLAGS_EXCLUDE_CERTIFICATES = $00008; // do not include certificates in the drop list
{$EXTERNALSYM CREDUI_FLAGS_EXCLUDE_CERTIFICATES}
CREDUI_FLAGS_REQUIRE_CERTIFICATE = $00010;
{$EXTERNALSYM CREDUI_FLAGS_REQUIRE_CERTIFICATE}
CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX = $00040;
{$EXTERNALSYM CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX}
CREDUI_FLAGS_ALWAYS_SHOW_UI = $00080;
{$EXTERNALSYM CREDUI_FLAGS_ALWAYS_SHOW_UI}
CREDUI_FLAGS_REQUIRE_SMARTCARD = $00100;
{$EXTERNALSYM CREDUI_FLAGS_REQUIRE_SMARTCARD}
CREDUI_FLAGS_PASSWORD_ONLY_OK = $00200;
{$EXTERNALSYM CREDUI_FLAGS_PASSWORD_ONLY_OK}
CREDUI_FLAGS_VALIDATE_USERNAME = $00400;
{$EXTERNALSYM CREDUI_FLAGS_VALIDATE_USERNAME}
CREDUI_FLAGS_COMPLETE_USERNAME = $00800;
{$EXTERNALSYM CREDUI_FLAGS_COMPLETE_USERNAME}
CREDUI_FLAGS_PERSIST = $01000; // Do not show "Save" checkbox, but persist credentials anyway
{$EXTERNALSYM CREDUI_FLAGS_PERSIST}
CREDUI_FLAGS_SERVER_CREDENTIAL = $04000;
{$EXTERNALSYM CREDUI_FLAGS_SERVER_CREDENTIAL}
CREDUI_FLAGS_EXPECT_CONFIRMATION = $20000; // do not persist unless caller later confirms credential via CredUIConfirmCredential() api
{$EXTERNALSYM CREDUI_FLAGS_EXPECT_CONFIRMATION}
CREDUI_FLAGS_GENERIC_CREDENTIALS = $40000; // Credential is a generic credential
{$EXTERNALSYM CREDUI_FLAGS_GENERIC_CREDENTIALS}
CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS = $80000; // Credential has a username as the target
{$EXTERNALSYM CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS}
CREDUI_FLAGS_KEEP_USERNAME = $100000; // don't allow the user to change the supplied username
{$EXTERNALSYM CREDUI_FLAGS_KEEP_USERNAME}
//
// Mask of flags valid for CredUIPromptForCredentials
//
CREDUI_FLAGS_PROMPT_VALID =
CREDUI_FLAGS_INCORRECT_PASSWORD or
CREDUI_FLAGS_DO_NOT_PERSIST or
CREDUI_FLAGS_REQUEST_ADMINISTRATOR or
CREDUI_FLAGS_EXCLUDE_CERTIFICATES or
CREDUI_FLAGS_REQUIRE_CERTIFICATE or
CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX or
CREDUI_FLAGS_ALWAYS_SHOW_UI or
CREDUI_FLAGS_REQUIRE_SMARTCARD or
CREDUI_FLAGS_PASSWORD_ONLY_OK or
CREDUI_FLAGS_VALIDATE_USERNAME or
CREDUI_FLAGS_COMPLETE_USERNAME or
CREDUI_FLAGS_PERSIST or
CREDUI_FLAGS_SERVER_CREDENTIAL or
CREDUI_FLAGS_EXPECT_CONFIRMATION or
CREDUI_FLAGS_GENERIC_CREDENTIALS or
CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS or
CREDUI_FLAGS_KEEP_USERNAME;
{$EXTERNALSYM CREDUI_FLAGS_PROMPT_VALID}
//-----------------------------------------------------------------------------
// Functions
//-----------------------------------------------------------------------------
//
// Values of flags to CredWrite and CredWriteDomainCredentials
//
const
CRED_PRESERVE_CREDENTIAL_BLOB = $1;
{$EXTERNALSYM CRED_PRESERVE_CREDENTIAL_BLOB}
function CredWriteW(Credential: PCREDENTIALW; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredWriteW}
function CredWriteA(Credential: PCREDENTIALA; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredWriteA}
{$IFDEF UNICODE}
function CredWrite(Credential: PCREDENTIALW; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredWrite}
{$ELSE}
function CredWrite(Credential: PCREDENTIALA; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredWrite}
{$ENDIF}
function CredReadW(TargetName: LPCWSTR; Type_: DWORD; Flags: DWORD; var Credential: PCREDENTIALW): BOOL; stdcall;
{$EXTERNALSYM CredReadW}
function CredReadA(TargetName: LPCSTR; Type_: DWORD; Flags: DWORD; var Credential: PCREDENTIALA): BOOL; stdcall;
{$EXTERNALSYM CredReadA}
{$IFDEF UNICODE}
function CredRead(TargetName: LPCWSTR; Type_: DWORD; Flags: DWORD; var Credential: PCREDENTIALW): BOOL; stdcall;
{$EXTERNALSYM CredRead}
{$ELSE}
function CredRead(TargetName: LPCSTR; Type_: DWORD; Flags: DWORD; var Credential: PCREDENTIALA): BOOL; stdcall;
{$EXTERNALSYM CredRead}
{$ENDIF}
function CredEnumerateW(Filter: LPCWSTR; Flags: DWORD; var Count: DWORD; var Credential: PCREDENTIALW): BOOL; stdcall;
{$EXTERNALSYM CredEnumerateW}
function CredEnumerateA(Filter: LPCSTR; Flags: DWORD; var Count: DWORD; var Credential: PCREDENTIALA): BOOL; stdcall;
{$EXTERNALSYM CredEnumerateA}
{$IFDEF UNICODE}
function CredEnumerate(Filter: LPCWSTR; Flags: DWORD; var Count: DWORD; var Credential: PCREDENTIALW): BOOL; stdcall;
{$EXTERNALSYM CredEnumerate}
{$ELSE}
function CredEnumerate(Filter: LPCSTR; Flags: DWORD; var Count: DWORD; var Credential: PCREDENTIALA): BOOL; stdcall;
{$EXTERNALSYM CredEnumerate}
{$ENDIF}
function CredWriteDomainCredentialsW(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONW; Credential: PCREDENTIALW; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredWriteDomainCredentialsW}
function CredWriteDomainCredentialsA(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONA; Credential: PCREDENTIALA; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredWriteDomainCredentialsA}
{$IFDEF UNICODE}
function CredWriteDomainCredentials(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONW; Credential: PCREDENTIALW; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredWriteDomainCredentials}
{$ELSE}
function CredWriteDomainCredentials(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONA; Credential: PCREDENTIALA; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredWriteDomainCredentials}
{$ENDIF}
//
// Values of flags to CredReadDomainCredentials
//
const
CRED_CACHE_TARGET_INFORMATION = $1;
{$EXTERNALSYM CRED_CACHE_TARGET_INFORMATION}
function CredReadDomainCredentialsW(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONW; Flags: DWORD; var Count: DWORD; var Credential: PCREDENTIALW): BOOL; stdcall;
{$EXTERNALSYM CredReadDomainCredentialsW}
function CredReadDomainCredentialsA(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONA; Flags: DWORD; var Count: DWORD; var Credential: PCREDENTIALA): BOOL; stdcall;
{$EXTERNALSYM CredReadDomainCredentialsA}
{$IFDEF UNICODE}
function CredReadDomainCredentials(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONW; Flags: DWORD; var Count: DWORD; var Credential: PCREDENTIALW): BOOL; stdcall;
{$EXTERNALSYM CredReadDomainCredentials}
{$ELSE}
function CredReadDomainCredentials(TargetInfo: PCREDENTIAL_TARGET_INFORMATIONA; Flags: DWORD; var Count: DWORD; var Credential: PCREDENTIALA): BOOL; stdcall;
{$EXTERNALSYM CredReadDomainCredentials}
{$ENDIF}
function CredDeleteW(TargetName: LPCWSTR; Type_: DWORD; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredDeleteW}
function CredDeleteA(TargetName: LPCSTR; Type_: DWORD; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredDeleteA}
{$IFDEF UNICODE}
function CredDelete(TargetName: LPCWSTR; Type_: DWORD; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredDelete}
{$ELSE}
function CredDelete(TargetName: LPCSTR; Type_: DWORD; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredDelete}
{$ENDIF}
function CredRenameW(OldTargetName: LPCWSTR; NewTargetName: LPCWSTR; Type_: DWORD; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredRenameW}
function CredRenameA(OldTargetName: LPCSTR; NewTargetName: LPCSTR; Type_: DWORD; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredRenameA}
{$IFDEF UNICODE}
function CredRename(OldTargetName: LPCWSTR; NewTargetName: LPCWSTR; Type_: DWORD; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredRename}
{$ELSE}
function CredRename(OldTargetName: LPCSTR; NewTargetName: LPCSTR; Type_: DWORD; Flags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CredRename}
{$ENDIF}
//
// Values of flags to CredGetTargetInfo
//
const
CRED_ALLOW_NAME_RESOLUTION = $1;
{$EXTERNALSYM CRED_ALLOW_NAME_RESOLUTION}
function CredGetTargetInfoW(TargetName: LPCWSTR; Flags: DWORD; var TargetInfo: PCREDENTIAL_TARGET_INFORMATIONW): BOOL; stdcall;
{$EXTERNALSYM CredGetTargetInfoW}
function CredGetTargetInfoA(TargetName: LPCSTR; Flags: DWORD; var TargetInfo: PCREDENTIAL_TARGET_INFORMATIONA): BOOL; stdcall;
{$EXTERNALSYM CredGetTargetInfoA}
{$IFDEF UNICODE}
function CredGetTargetInfo(TargetName: LPCWSTR; Flags: DWORD; var TargetInfo: PCREDENTIAL_TARGET_INFORMATIONW): BOOL; stdcall;
{$EXTERNALSYM CredGetTargetInfo}
{$ELSE}
function CredGetTargetInfo(TargetName: LPCSTR; Flags: DWORD; var TargetInfo: PCREDENTIAL_TARGET_INFORMATIONA): BOOL; stdcall;
{$EXTERNALSYM CredGetTargetInfo}
{$ENDIF}
function CredMarshalCredentialW(CredType: CRED_MARSHAL_TYPE; Credential: PVOID; var MarshaledCredential: LPWSTR): BOOL; stdcall;
{$EXTERNALSYM CredMarshalCredentialW}
function CredMarshalCredentialA(CredType: CRED_MARSHAL_TYPE; Credential: PVOID; MarshaledCredential: LPSTR): BOOL; stdcall;
{$EXTERNALSYM CredMarshalCredentialA}
{$IFDEF UNICODE}
function CredMarshalCredential(CredType: CRED_MARSHAL_TYPE; Credential: PVOID; var MarshaledCredential: LPWSTR): BOOL; stdcall;
{$EXTERNALSYM CredMarshalCredential}
{$ELSE}
function CredMarshalCredential(CredType: CRED_MARSHAL_TYPE; Credential: PVOID; MarshaledCredential: LPSTR): BOOL; stdcall;
{$EXTERNALSYM CredMarshalCredential}
{$ENDIF}
function CredUnmarshalCredentialW(MarshaledCredential: LPCWSTR; CredType: PCRED_MARSHAL_TYPE; var Credential: PVOID): BOOL; stdcall;
{$EXTERNALSYM CredUnmarshalCredentialW}
function CredUnmarshalCredentialA(MarshaledCredential: LPCSTR; CredType: PCRED_MARSHAL_TYPE; Credential: PVOID): BOOL; stdcall;
{$EXTERNALSYM CredUnmarshalCredentialA}
{$IFDEF UNICODE}
function CredUnmarshalCredential(MarshaledCredential: LPCWSTR; CredType: PCRED_MARSHAL_TYPE; var Credential: PVOID): BOOL; stdcall;
{$EXTERNALSYM CredUnmarshalCredential}
{$ELSE}
function CredUnmarshalCredential(MarshaledCredential: LPCSTR; CredType: PCRED_MARSHAL_TYPE; Credential: PVOID): BOOL; stdcall;
{$EXTERNALSYM CredUnmarshalCredential}
{$ENDIF}
function CredIsMarshaledCredentialW(MarshaledCredential: LPCWSTR): BOOL; stdcall;
{$EXTERNALSYM CredIsMarshaledCredentialW}
function CredIsMarshaledCredentialA(MarshaledCredential: LPCSTR): BOOL; stdcall;
{$EXTERNALSYM CredIsMarshaledCredentialA}
{$IFDEF UNICODE}
function CredIsMarshaledCredential(MarshaledCredential: LPCWSTR): BOOL; stdcall;
{$EXTERNALSYM CredIsMarshaledCredential}
{$ELSE}
function CredIsMarshaledCredential(MarshaledCredential: LPCSTR): BOOL; stdcall;
{$EXTERNALSYM CredIsMarshaledCredential}
{$ENDIF}
function CredGetSessionTypes(MaximumPersistCount: DWORD; MaximumPersist: LPDWORD): BOOL; stdcall;
{$EXTERNALSYM CredGetSessionTypes}
procedure CredFree(Buffer: PVOID); stdcall;
{$EXTERNALSYM CredFree}
function CredUIPromptForCredentialsW(pUiInfo: PCREDUI_INFOW; pszTargetName: LPCWSTR; pContext: PCtxtHandle; dwAuthError: DWORD; pszUserName: PWSTR; ulUserNameBufferSize: ULONG; pszPassword: PWSTR; ulPasswordBufferSize: ULONG; var save: BOOL; dwFlags: DWORD): DWORD; stdcall;
{$EXTERNALSYM CredUIPromptForCredentialsW}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -