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) |
69 | 정성태 | 10/27/2006 | 4542 | .NET : 1. Typed DataSet 에서의 ExcludeSchema 사용 | |
68 | 정성태 | 1/27/2007 | 5039 | Vista : 2. Elevate through ShellExecute | |
67 | 정성태 | 10/22/2006 | 4228 | Vista : 1. Programmatically determine if an application requires elevation | |
66 | 정성태 | 9/22/2006 | 4148 | Tip/Trick: UpdateProgress Control and AJAX Activity Image Animations | |
65 | 정성태 | 9/15/2006 | 9431 | Tip/Trick: Enabling Back/Forward-Button Support for ASP.NET AJAX UpdatePanel | |
64 | 정성태 | 2/23/2007 | 4360 | Why are NameValueCollection lookups slower than Hashtable? [Kim Hamilton] | |
63 | 정성태 | 8/30/2006 | 4247 | WinFormResizer for .NET 2.0, v.2.0.0020.3 Released! | |
62 | 정성태 | 8/21/2006 | 4054 | Stylistic differences in using | |
61 | 정성태 | 8/5/2006 | 4242 | Detecting Information Card Support (CardSpace!) in a browser | |
60 | 정성태 | 7/22/2006 | 4011 | JonGallant WebControls v1.0 - ScrollableContainer | |
59 | 정성태 | 3/2/2006 | 5305 | .NET이 왜 성공할 수밖에 없는가? | |
58 | 정성태 | 10/5/2005 | 5102 | 한국 MSDN - 홈지기가 번역한 MSDN Magazine 자료 | |
57 | 정성태 | 5/5/2005 | 4511 | 구구단 프로그램을 제외하고, 벤더종속적이지 않은 프로그래밍 언어가 있나요? | |
53 | 정성태 | 3/4/2005 | 5829 | [마소 연재 기사: 2004-05] 특집 X-Inernet : 닷넷 스마트 클라이언트 [4] | 1 |
52 | 정성태 | 3/4/2005 | 6078 | [마소 연재 기사: 2004-04] 실전!강의실 - IE에서 닷넷 스마트 클라이언트 개발 3 | 1 |
51 | 정성태 | 3/4/2005 | 6410 | [마소 연재 기사: 2004-03] 실전!강의실 - IE에서 닷넷 스마트 클라이언트 개발 2 | 1 |
55 | 정성태 | 3/30/2005 | 4865 | [추가] 기본 보안만으로 구현하는 스마트 클라이언트 이벤트 구현 | |
50 | 정성태 | 3/4/2005 | 8456 | [마소 연재 기사: 2004-02] 실전!강의실 - IE에서 닷넷 스마트 클라이언트 개발 1 [3] | 1 |
49 | 정성태 | 9/7/2006 | 7677 | RSA 공개키/개인키 암호화, DES 암호화, MD5 단방향 해시 암호화 클래스 (C#) 2002.09.25 | 1 |
48 | 정성태 | 7/17/2003 | 5600 | C# 으로 만든 Base64 인코딩/디코딩 클래스 (C#) 2002.09.24 | 1 |
47 | 정성태 | 7/17/2003 | 4544 | C# 으로 만든 DLL 을 Managed C++ 에서 이용하는 예제 (C#, Managed C++) 2002.08.01 | 1 |
46 | 정성태 | 7/17/2003 | 4699 | .NET으로 만든 COM+ 객체를 HTML에서 사용 (C#, COM+) 2002.06.10 | 1 |
45 | 정성태 | 7/17/2003 | 4861 | COM+ 객체 원격 접근예제 (VC 6.0, ATL, COM+) 2002.05.31 | 1 |
44 | 정성태 | 7/17/2003 | 4800 | Win32 API Hook (VC 6.0, ATL) 2002.05.12 | 1 |
54 | 정성태 | 3/21/2005 | 4333 | [추가]: 최근 나온 소개된 관련 기사 | 2 |
43 | 정성태 | 7/17/2003 | 5755 | 탐색기 Namespace Extension 컨테이너 (VC 6.0, ATL) 2002.03.24 | 1 |