How to import a certificate without user interaction (C++ & C#)
;
http://blogs.msdn.com/alejacma/archive/2008/01/31/how-to-import-a-certificate-without-user-interaction-c-c.aspx
C++ 과 C# 코드로 소개되어 있습니다.
<pre>
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace ImportCertNet
{
class Program
{
public struct CRYPTUI_WIZ_IMPORT_SRC_INFO
{
public Int32 dwSize;
public Int32 dwSubjectChoice;
[MarshalAs(UnmanagedType.LPWStr)]public String pwszFileName;
public Int32 dwFlags;
[MarshalAs(UnmanagedType.LPWStr)]public String pwszPassword;
}
[DllImport("CryptUI.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern Boolean CryptUIWizImport(
Int32 dwFlags,
IntPtr hwndParent,
IntPtr pwszWizardTitle,
ref CRYPTUI_WIZ_IMPORT_SRC_INFO pImportSrc,
IntPtr hDestCertStore
);
public const Int32 CRYPTUI_WIZ_IMPORT_SUBJECT_FILE = 1;
public const Int32 CRYPT_EXPORTABLE = 0x00000001;
public const Int32 CRYPT_USER_PROTECTED = 0x00000002;
public const Int32 CRYPTUI_WIZ_NO_UI = 0x0001;
static void Main(string[] args)
{
CRYPTUI_WIZ_IMPORT_SRC_INFO importSrc = new CRYPTUI_WIZ_IMPORT_SRC_INFO();
importSrc.dwSize = Marshal.SizeOf(importSrc);
importSrc.dwSubjectChoice = CRYPTUI_WIZ_IMPORT_SUBJECT_FILE;
importSrc.pwszFileName = "C:\\alex.pfx";
importSrc.pwszPassword = "password";
importSrc.dwFlags = CRYPT_EXPORTABLE | CRYPT_USER_PROTECTED;
if (!CryptUIWizImport(
CRYPTUI_WIZ_NO_UI,
IntPtr.Zero,
IntPtr.Zero,
ref importSrc,
IntPtr.Zero
))
{
Console.WriteLine("CryptUIWizImport error " + Marshal.GetLastWin32Error());
}
Console.WriteLine("<< Press any key to continue >>");
Console.ReadKey();
}
}
}
</pre>
No | Writer | Date | Cnt. | Title | File(s) |
43 | 정성태 | 7/17/2003 | 5761 | 탐색기 Namespace Extension 컨테이너 (VC 6.0, ATL) 2002.03.24 | 1 |
42 | 정성태 | 7/17/2003 | 4286 | KBManager WebBand (VC 6.0, ATL/Script) 2001.10.01 | 1 |
41 | 정성태 | 7/17/2003 | 4358 | UrlMonDownload (VC 6.0, ATL) 2001.06.16 | 1 |
40 | 정성태 | 7/17/2003 | 4305 | IE 북마크 임포트 (VC 6.0, ATL, MFC 지원) 2001.01.20 | 1 |
39 | 정성태 | 7/17/2003 | 4876 | MsIE.exe (VC 6.0, ATL, HTML Parser 로서의 IHTMLDocument2 이용 및 IE 보안설정) 2000.11.23 | 1 |
38 | 정성태 | 7/17/2003 | 4590 | EnumIE.exe (VC 6.0, ATL, 현재 사용 중인 IE에 접속) 2000.10.24 | 1 |
37 | 정성태 | 7/17/2003 | 4330 | ReuseIE.exe (VC ++ 6,0, Internet Explorer 재사용) 2000.04.17 | 1 |
36 | 정성태 | 7/17/2003 | 3933 | RemoteViewer dll (VC ++ 6.0, ATL) 2000.03.13 | 1 |
35 | 정성태 | 7/17/2003 | 4236 | IESpy dll (VC ++ 6.0, ATL) 2000.02.28 | 1 |
34 | 정성태 | 7/17/2003 | 3972 | Bmp2Gif 콘트롤 (VC ++ 6.0, MFC) 2000.02.28 | 1 |
33 | 정성태 | 7/17/2003 | 3788 | Gif89a 콘트롤 (VC ++ 6.0, ATL) 2000.02.28 | 1 |
32 | 정성태 | 7/17/2003 | 4295 | 이미지 4버튼 (VC ++ 6.0, ATL) 2000.02.28 | 1 |
31 | 정성태 | 7/17/2003 | 3917 | 이미지 홀더 (VC ++ 6.0, ATL) 2000.02.28 | 1 |
30 | 정성태 | 7/17/2003 | 4045 | 이미지 뷰어 (VC ++ 6.0, ATL) 2000.02.28 | 1 |
29 | 정성태 | 7/17/2003 | 3826 | ChatClient (VC ++ 6.0, MFC) 1999.09.09 | 1 |
28 | 정성태 | 7/17/2003 | 5223 | Winsock2 SPI : LSP 예제 (VC ++ 6.0) 2001.08.07 | 1 |
27 | 정성태 | 7/17/2003 | 4332 | Echo Services Server (VC ++ 6.0, ATL Service) 2001.01.07 | 1 |
26 | 정성태 | 7/17/2003 | 7357 | FTP Client (VC ++ 6.0, MFC) 1999.09.14 | 1 |
25 | 정성태 | 7/17/2003 | 3727 | 모뎀 정보를 알아내는 클래스 (VC ++ 6.0, MFC) 1999.09.12 | 1 |
24 | 정성태 | 7/17/2003 | 8454 | Ping (VC ++ 6.0, MFC, CSocket Class) 1999.09.09 [1] | 1 |
23 | 정성태 | 7/21/2003 | 7417 | ChatServer / ChatClient (VC ++ 6.0, MFC, Win32 API Socket) 1999.08.01 | 2 |
22 | 정성태 | 7/17/2003 | 3886 | 성능 객체 카운터 (VC 6.0, Win32) 2001.07.07 | 1 |
21 | 정성태 | 7/17/2003 | 3911 | StringSplit 클래스 (VC++6.0, Win32) 2000.02.28 | 1 |
20 | 정성태 | 7/17/2003 | 4179 | SQLDirect 클래스 (VC++6.0, Win32) 2000.02.28 | 1 |
19 | 정성태 | 7/17/2003 | 3581 | ImeControl 클래스 (VC++6.0, Win32) 2000.02.28 | 1 |
18 | 정성태 | 7/17/2003 | 4011 | RegistryEx 클래스 (VC++6.0, Win32) 2000.02.28 | 1 |