CredWrite返回Win32错误代码2(ERROR_INVALID_FUNCTION)"不正确的功能。"
题
我想叫 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;
与。是回1(ERROR_INVALID_FUNCTION
)
是这样的功能不正确的?它甚至没有回来 ERROR_INVALID_PARAMETER
, ,这是返回的"不正确的功能"。什么是不正确的?
是否有任何代码样本,呼吁CredWrite?
注意到
- 我试着打电话给Ansi版本(CredWriteA),同样的结果
- 我已经试过使用
CRED_PERSIST_SESSION
和CRED_PERSIST_LOCAL_MACHINE
, ,在外CRED_PERSIST_ENTERPRISE
解决方案
没关系,我想通了。
它不出故障的API调,或者我的参数。
我只是愚蠢的。
我想要生气断,而不必说什么我做的:(
其他提示
不应该这样
Credentials.Type_ := CRED_TYPE_GENERIC;
是这个吗?
Credentials.Type := CRED_TYPE_GENERIC;
我很好奇,这是为智能卡,对吗?和你在储存的销,没有智能卡上,或许附件/司机是不是载于credwrite工作?也许,有一个标准的定义智能卡的硬件/软件使用的windows将激活CredWrite功能,我猜是,CredWrite是试图通信的东西(也许是一个通用的API叫到一个标准功能的内的智能卡的硬件?)...只是我的想法...
希望这会有所帮助, 最好的问候, 汤姆。
不隶属于 StackOverflow