Windows XP 및 Vista에서 CapiCOM dll을 사용하여 X509 인증서를 처리 할 수있었습니다.
그러나이 경로는 Window 7 (이상)에서 사용되지 않습니다.Windows 7의 상점에 X509 인증서 추가
Delphi 도움말 (XE6)에서 Data.DBXCommon.TX509Certificate에서만 X509 코드를 찾을 수 있지만 Windows 인증서 저장소와 관련이없는 것처럼 보입니다.
MSDN은 system.dll
및 system.security.dll
를 사용하는 나에게 말한다, 그러나 XE6는 이들에 대한 헤더 파일을 제공하지 않는 것 : I에 어떻게
(누락 System.dll을 헤더 파일)
Windows 7에서 작동하도록 다음 코드를 번역 하시겠습니까?
uses
Capicom_TLB, CapicomConst, ActiveX;
{$R *.dfm}
procedure TForm11.Button1Click(Sender: TObject);
var
CertificateFilename: PWideChar;
Store: TStore;
Certificate: ICertificate2;
Password: WideString;
begin
if FileOpenDialog1.Execute then begin
CertificateFilename:= StringToOleStr(FileOpenDialog1.FileName);
Store:= TStore.Create(Self);
try
Password:= '';
Store.Open(CAPICOM_LOCAL_MACHINE_STORE, CAPICOM_ROOT_STORE, CAPICOM_STORE_OPEN_READ_WRITE);
Certificate:= TCertificate.Create(Self) as ICertificate2;
Certificate.Load(CertificateFilename^, Password, CAPICOM_KEY_STORAGE_DEFAULT, CAPICOM_LOCAL_MACHINE_KEY);
Store.Add(Certificate as ICertificate2);
finally
Store.Close;
SysFreeString(CertificateFilename);
end;
end;
end;
Windows XP에서 Windows 8/9까지 작동하는 코드는 보너스가 될 수 있습니다.
MSDN 문서의 설명에서 올바르게 나타납니다. 이 함수가 어느 DLL에 존재하는지 알아낼 수 있는지 알아 봅시다. – Johan
그것은'CryptUI.dll'에 있습니다 : 함수 CryptUIWizImport (dwFlags : DWORD; HWndParent : HWND; WizardTitle : PWideString; ImportSrc : PCCRYPTUI_WIZ_IMPORT_SRC_INFO; hDestCertStore : THandle) : BOOL; stdcall; external 'CryptUI.dll'; ' – Johan
CryptUI dll 함수를 사용해 보았습니다. 그러나 사용 된 구조체는 매우 미미하게 복잡하여 그 접근법을 단순히 수행 할 수 없습니다. 대신 커맨드 라인 접근법을 시도 할 것입니다. – Johan