私はCredWriteを呼び出そうとしていますが、 ERROR_INVALID_FUNCTIONを返しています。CredReadを呼び出してパスワード ストアから資格情報をフェッチし、CredUIPromptForCredentialsを使用して新しい資格情報を保存できます。
しかし、CredWrite を機能させる方法がわかりません。
私が使用しているコードは次のとおりです。
var
Target, Username, Password: WideString;
begin
Target := 'StackOverflowSomething';
Username := 'IanBoyd';
Password := 'password69';
ZeroMemory(@Credentials, SizeOf(Credentials));
Credentials.TargetName := PWideChar(Target);
Credentials.Type_ := CRED_TYPE_GENERIC;
Credentials.UserName := PWideChar(Username);
Credentials.Persist := CRED_PERSIST_ENTERPRISE;
Credentials.CredentialBlob := PByte(Password);
Credentials.CredentialBlobSize := 2*(Length(Password));
Credentials.UserName := PWideChar(Username);
if not CredWriteW(@Credentials, 0) then
RaiseLastWin32Error;
そして GetLastError は 1 ( ERROR_INVALID_FUNCTION
)を返しています
この関数は間違っていますか? を返すことすらありませんERROR_INVALID_PARAMETER
。「正しくない関数」を返します。何が間違っていますか?
CredWrite を呼び出すサンプル コードはありますか?
ノート
- Ansi バージョン (CredWriteA) を呼び出してみましたが、同じ結果です
- 私は と を使ってみまし
CRED_PERSIST_SESSION
たCRED_PERSIST_LOCAL_MACHINE
に加えてCRED_PERSIST_ENTERPRISE