Programming

인증서 강제 설치 (사용자 모르게...ㅋ)

bcheul 2008. 1. 2. 09:26
액티브엑스 컨트롤을 배포하다보면 인증서를 구입해야하는데..

요넘이 가격이 장난이 아니죠.. 사내에서만 사용하는데.. 또는 일부

몇몇만 쓰는데 이렇게 비싼넘을 살필요는 없죠..

그래서 우리는 테스트 인증서를 사용하는데 요넘도..문제가 있죠..

모양이 구리다.. 또 버전업이 될때마동.. 계속보인다..

요런... 그래서 저는 아래의 코딩으로 강제 설치하는 방법을 택했습니다.

제컴에서 테스트 했는데 잘되던데...

이 코딩을 하시기전에 인증서를 사용자 모르게 다운받는 부분을 여러분이

아라서 하셔야 겠죠~~



ShellExecute(NULL,"open","c:\\SoftGate\\ROOT.CER",NULL,NULL,SW_SHOWNORMAL);
    Sleep(500);
    HWND ht;
    int cnt;
    cnt = 0;    //30000이넘으면 자동으로 포기하게끔..
    do{
        ht = ::FindWindow("#32770", "인증서");
        ht = ::FindWindowEx(ht,NULL,"#32770","일반");
        ht = ::FindWindowEx(ht,NULL,"Button","인증서 설치(&I)...");
   
        cnt++;
        if(cnt>30000)
            return;
    }
    while(ht==NULL);
    if(!(ht==NULL))
    {
        ::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);    
        ::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);    
        Sleep(10);
    }
    cnt = 0;
    do{
        ht = ::FindWindow("#32770", "인증서 가져오기 마법사");
        ht = ::FindWindowEx(ht,NULL,"Button","다음(&N) >");
        cnt++;
        if(cnt>30000)
            return;
    }
    while(ht==NULL);

    if(!(ht==NULL))
    {
        ::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);    
        ::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
        Sleep(10);
    }
    cnt = 0;
    do{
        ht = ::FindWindow("#32770", "인증서 가져오기 마법사");
        ht = ::FindWindowEx(ht,NULL,"Button","마침");
        cnt++;
        if(cnt>30000)
            return;
    }
    while(ht==NULL);

    if(!(ht==NULL))
    {
        ::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);    
        ::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);    
        Sleep(10);
    }
    cnt = 0;
    do{
        ht = ::FindWindow("#32770", "루트 인증서 저장소");
        ht = ::FindWindowEx(ht,NULL,"Button","예(&Y)");
        if(ht==NULL)
            ht = ::FindWindow("#32770", "인증서 가져오기 마법
사");
        cnt++;
        if(cnt>30000)
            return;
    }
    while(ht==NULL);

    if(!(ht==NULL))
    {
        ::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);    
        ::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
        Sleep(10);
    }
    cnt = 0;
    do{
        ht = ::FindWindow("#32770", "인증서 가져오기 마법사");
        ht = ::FindWindowEx(ht,NULL,"Button","확인");
        cnt++;
        if(cnt>30000)
            return;
    }
    while(ht==NULL);

    if(!(ht==NULL))
    {
        ::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);    
        ::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
        Sleep(10);
    }
    cnt = 0;
    do{
        ht = ::FindWindow("#32770", "인증서");
        ht = ::FindWindowEx(ht,NULL,"Button","확인");
        cnt++;
        if(cnt>30000)
            return;
    }
    while(ht==NULL);
    if(!(ht==NULL))
    {
        ::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);    
        ::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);        
   
    }

'Programming' 카테고리의 다른 글

C++ INI 파일 관련 클래스  (0) 2007.10.16
순서도  (0) 2007.05.21
USB 드라이버 관련자료  (0) 2007.04.27
IWebBrowser2::Document  (0) 2007.04.27
IWebBrowser2 Interface  (0) 2007.04.27