Microsoft MVP성태의 닷넷 이야기
Win32 : 3. 사용자 개입없이 인증서 설치하는 코드 [링크 복사], [링크+제목 복사]
조회: 8087
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

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();
        }
    }
}
&lt;/pre>








[최초 등록일: ]
[최종 수정일: 2/1/2008]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

비밀번호

댓글 작성자
 



2008-02-20 05시05분
kevin25
2009-01-29 12시24분
kevin25

1  2  3  [4]  5  6  7  8 
NoWriterDateCnt.TitleFile(s)
120정성태9/14/20074712Vista : 7. Gadget Samples for Windows Sidebar
119정성태8/23/20074969.NET 3.5 : 3. WCF 서비스에서 HTTP 헤더 설정
118정성태6/20/20075490.NET 3.5 : 2. LINQ - 페이징 구현
117정성태6/20/20075140.NET : 23. Silverlight 응용 프로그램 제작
116정성태6/19/20075467.NET : 22. Bluetooth on Managed code [2]
115정성태6/17/20074833레지스트리 : 4. .NET Framework 및 Visual Studio 관련 레지스트리 키
114정성태6/9/20075197레지스트리 : 3. DWM enable/disable
113정성태6/9/20074660Vista : 6. 웹 사이트 추가/삭제 예제 코드
112정성태6/7/20074629Vista : 5. Transacted NTFS 코드 예제들
111정성태6/6/20074910.NET 3.5 : 1. LINQ 를 이용하여 DB 데이터를 XML 로 변환
110정성태6/2/20074819레지스트리 : 2. Aero Glass 효과를 느리게 보여주는 설정
109정성태5/19/200710346공통 코딩 규약 : 4. 닷넷 직렬화 방법 - 이진 직렬화(Binary Serialization) 사용 패턴
108정성태5/19/20074781공통 코딩 규약 : 3. 탭 문자 설정 [1]
107정성태5/11/20074676명령행 : 5. 비스타 - Auditing 관련 옵션 제어
106정성태5/11/20075660.NET 3.0 : 2. WPF - InvokeRequired 대신 CheckAccess 호출
105정성태5/9/20074446명령행 : 4. [PS] 같은 이름을 가진 프로세스 중에서 제일 먼저 띄운 인스턴스를 제외하고 모두 종료
104정성태5/3/20074429명령행 : 3. [롱혼] ServerManagerCmd.exe
103정성태4/18/20074479웹폼 코딩 규약 : 1. 서버측 웹폼 컨트롤 - 클라이언트 측 이벤트를 노출시키는 방법
102정성태4/18/20075881COM : 3. ActiveScript의 문법 오류 검사 [3]
101정성태4/18/20075090레지스트리 : 1. 비스타 - IIS 서비스 설치 여부
100정성태3/29/20074533명령행 : 2. AppPool 재시작
99정성태3/22/20074710명령행 : 1. 닷넷 웹 사이트 소스를 공유 폴더에 위치한 경우 설정
98정성태3/7/20075178.NET : 21. 저장 프로시저(SP)에 관한 스키마 정보 알아내기
97정성태3/7/20074535.NET 3.0 : 1. Boilerplate code for custom Encoder Binding Elements
96정성태3/7/20075265Vista : 4. 마스터 볼륨을 조정하는 방법
95정성태2/23/20074973.NET : 20. .Net Zip Library/Utility updates and fixes
1  2  3  [4]  5  6  7  8