728x90
오늘 질문게시판에 올라온걸 답하다가... 찾은것입니다.. ^^

제 환경이 영문XP에서 로케이션만 한글을 입출력가능하게 셋팅해 놓고 사용중입니다...

몇몇 API를 찾아서... OS가 영문인지 한글인지를 알아보려고했으나...

값들은 모두 현재 로케이션설정된 언어로만 코드가 나오더군요.. ㅡㅡ;

그래서 찾은 API는 GetSystemDefaultUILanguage 라는 넘입니다.. ^^

모듈에 선언은 다음과같이 했구요..

Public Declare Function GetSystemDefaultUILanguage Lib "kernel32" () As Integer

폼에서는

Private Sub Form_Load()

    Print Hex(GetSystemDefaultUILanguage)

End Sub

라고했습니다.. ^^

그럼.. 실행해보시면... OS의 코드가 16진수로 나올것입니다...

아래의 글을 참고하시면.. OS가 어느 언어인지.. 확인하실수있습니다.. ^^

즐플하세요.. ^^

참고로 한글은 0x0412, 영문은 0x0409입니다.. ^^

Table of Language Identifiers
The following are language identifiers. They are composed of a primary language
identifier and a sublanguage identifier.

The following identifiers were composed using the MAKELANGID macro.

Identifier Language
0x0000 Language Neutral
0x007f The language for the invariant locale (LOCALE_INVARIANT). See MAKELCID.
0x0400 Process or User Default Language
0x0800 System Default Language
0x0436 Afrikaans
0x041c Albanian
0x0401 Arabic (Saudi Arabia)
0x0801 Arabic (Iraq)
0x0c01 Arabic (Egypt)
0x1001 Arabic (Libya)
0x1401 Arabic (Algeria)
0x1801 Arabic (Morocco)
0x1c01 Arabic (Tunisia)
0x2001 Arabic (Oman)
0x2401 Arabic (Yemen)
0x2801 Arabic (Syria)
0x2c01 Arabic (Jordan)
0x3001 Arabic (Lebanon)
0x3401 Arabic (Kuwait)
0x3801 Arabic (U.A.E.)
0x3c01 Arabic (Bahrain)
0x4001 Arabic (Qatar)
0x042b Windows 2000/XP: Armenian. This is Unicode only.
0x042c Azeri (Latin)
0x082c Azeri (Cyrillic)
0x042d Basque
0x0423 Belarusian
0x0402 Bulgarian
0x0455 Burmese
0x0403 Catalan
0x0404 Chinese (Taiwan)
0x0804 Chinese (PRC)
0x0c04 Chinese (Hong Kong SAR, PRC)
0x1004 Chinese (Singapore)
0x1404 Windows 98/Me, Windows 2000/XP: Chinese (Macau SAR)
0x041a Croatian
0x0405 Czech
0x0406 Danish
0x0465 Windows XP: Divehi. This is Unicode only.
0x0413 Dutch (Netherlands)
0x0813 Dutch (Belgium)
0x0409 English (United States)
0x0809 English (United Kingdom)
0x0c09 English (Australian)
0x1009 English (Canadian)
0x1409 English (New Zealand)
0x1809 English (Ireland)
0x1c09 English (South Africa)
0x2009 English (Jamaica)
0x2409 English (Caribbean)
0x2809 English (Belize)
0x2c09 English (Trinidad)
0x3009 Windows 98/Me, Windows 2000/XP: English (Zimbabwe)
0x3409 Windows 98/Me, Windows 2000/XP: English (Philippines)
0x0425 Estonian
0x0438 Faeroese
0x0429 Farsi
0x040b Finnish
0x040c French (Standard)
0x080c French (Belgian)
0x0c0c French (Canadian)
0x100c French (Switzerland)
0x140c French (Luxembourg)
0x180c Windows 98/Me, Windows 2000/XP: French (Monaco)
0x0456 Windows XP: Galician
0x0437 Windows 2000/XP: Georgian. This is Unicode only.
0x0407 German (Standard)
0x0807 German (Switzerland)
0x0c07 German (Austria)
0x1007 German (Luxembourg)
0x1407 German (Liechtenstein)
0x0408 Greek
0x0447 Windows XP: Gujarati. This is Unicode only.
0x040d Hebrew
0x0439 Windows 2000/XP: Hindi. This is Unicode only.
0x040e Hungarian
0x040f Icelandic
0x0421 Indonesian
0x0410 Italian (Standard)
0x0810 Italian (Switzerland)
0x0411 Japanese
0x044b Windows XP: Kannada. This is Unicode only.
0x0457 Windows 2000/XP: Konkani. This is Unicode only.
0x0412 Korean
0x0812 Windows 95, Windows NT 4.0 only: Korean (Johab)
0x0440 Windows XP: Kyrgyz.
0x0426 Latvian
0x0427 Lithuanian
0x0827 Windows 98 only: Lithuanian (Classic)
0x042f FYRO Macedonian
0x043e Malay (Malaysian)
0x083e Malay (Brunei Darussalam)
0x044e Windows 2000/XP: Marathi. This is Unicode only.
0x0450 Windows XP: Mongolian
0x0414 Norwegian (Bokmal)
0x0814 Norwegian (Nynorsk)
0x0415 Polish
0x0416 Portuguese (Brazil)
0x0816 Portuguese (Portugal)
0x0446 Windows XP: Punjabi. This is Unicode only.
0x0418 Romanian
0x0419 Russian
0x044f Windows 2000/XP: Sanskrit. This is Unicode only.
0x0c1a Serbian (Cyrillic)
0x081a Serbian (Latin)
0x041b Slovak
0x0424 Slovenian
0x040a Spanish (Spain, Traditional Sort)
0x080a Spanish (Mexican)
0x0c0a Spanish (Spain, International Sort)
0x100a Spanish (Guatemala)
0x140a Spanish (Costa Rica)
0x180a Spanish (Panama)
0x1c0a Spanish (Dominican Republic)
0x200a Spanish (Venezuela)
0x240a Spanish (Colombia)
0x280a Spanish (Peru)
0x2c0a Spanish (Argentina)
0x300a Spanish (Ecuador)
0x340a Spanish (Chile)
0x380a Spanish (Uruguay)
0x3c0a Spanish (Paraguay)
0x400a Spanish (Bolivia)
0x440a Spanish (El Salvador)
0x480a Spanish (Honduras)
0x4c0a Spanish (Nicaragua)
0x500a Spanish (Puerto Rico)
0x0430 Sutu
0x0441 Swahili (Kenya)
0x041d Swedish
0x081d Swedish (Finland)
0x045a Windows XP: Syriac. This is Unicode only.
0x0449 Windows 2000/XP: Tamil. This is Unicode only.
0x0444 Tatar (Tatarstan)
0x044a Windows XP: Telugu. This is Unicode only.
0x041e Thai
0x041f Turkish
0x0422 Ukrainian
0x0420 Windows 98/Me, Windows 2000/XP: Urdu (Pakistan)
0x0820 Urdu (India)
0x0443 Uzbek (Latin)
0x0843 Uzbek (Cyrillic)
0x042a Windows 98/Me, Windows NT 4.0 and later: Vietnamese


The following three combinations of usPrimaryLanguage and usSubLanguage have
special meaning.

Primary language identifier Sublanguage identifier Meaning
LANG_NEUTRAL SUBLANG_NEUTRAL Language neutral
LANG_NEUTRAL SUBLANG_DEFAULT User default language
LANG_NEUTRAL SUBLANG_SYS_DEFAULT System default language
728x90

▣ 실행 파일에 디지털 서명 넣기 (Ver 0.1)

▷ 준비물
    - 개인 키 파일(mycert.pvk) 및 PKCS #7 인증서 파일(mycert.spc)
    - 인증서 작업을 위한 프로그램 (signcode.exe)
    - 인증서 확인을 위한 프로그램 (chktrust.exe)


▷ 개인 키 파일(*.pvk) 및 PKCS #7 인증서 파일(*.spc)
    - 정식 인증서를 이용하는 경우 인증 기관을 통해 개인 키 파일과 PKCS #7 인증서를 발급 받는다.
    - 테스트 인증서를 이용하는 경우에는 makecert.exe, cert2spc.exe 프로그램을 이용해서 직접 만들어 사용한다.
    - [ActiveX] 테스트 인증서 만들기 내용 참고 (http://www.enjoydev.com/blog/70)


▷ 참고
    - 아래에서 테스트로 사용된 Project1.exe는 VB에서 기본으로 생성되는 "표준EXE" 프로젝트를 컴파일한 것입니다.
      단지 윈도우 폼만 나타날 뿐 아무런 작업도없으니 실행하셔도 괜찮습니다.
      VB 6.0에서 컴파일 했으므로 VB 런타임 라이브러리가 설치되어있지 않으면 실행되지 않습니다.


▷ 디지털 서명 작업 전후 비교 (Before)
    - 인터넷 주소창에 실행 파일의 경로를 입력하고, 실행 버튼을 누르면 다음의 화면을 볼 수 있다.

사용자 삽입 이미지


사용자 삽입 이미지


    - 디지털 서명이 없기 때문에 "알 수 없는 게시자"로 나타난다.


▷ 디지털 서명 작업 전후 비교 (After : 정식 인증서를 적용한 경우)
    - 인터넷 주소창에 실행 파일의 경로를 입력하고, 실행 버튼을 누르면 다음의 화면을 볼 수 있다.

사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지


    - 디지털 서명을 하면 위에서 처럼 게시자 정보가 표시되고 자신의 홈페이지로 연결시킬 수 있다.

    - 또한 클라이언트 PC에서 인증서 설치 과정을 거치면 보안 경고 없이 바로 실행되도록 할 수도 있다.

▷ 디지털 서명 작업 전후 비교 (After : 테스트 인증서를 적용한 경우)
    - 인터넷 주소창에 실행 파일의 경로를 입력하고, 실행 버튼을 누르면 다음의 화면을 볼 수 있다.

사용자 삽입 이미지


    - 디지털 서명을 넣더라도 테스트 인증서를 사용하는 경우에는 "알 수 없는 게시자"로 표시된다.

    - 로컬인트라넷 등 제한된 사용자에게 배포하는 경우에는 해당 인증서 설치를 유도함으로써 좀더 유연하게 사용 가능하다.
      (2007.01.23 현재 적용 방법 정리중)

▷ 디지털 서명 넣기 (윈도우 화면에서 클릭, 클릭으로 서명 작업)
    1. 탐색기에서 signcode.exe 프로그램을 더블클릭하면 "디지털 서명 마법사"가 시작된다.

    2. [파일 선택] "찾아보기" 버튼을 누른 후 서명할 파일 선택 (Project1.exe)

    3. [서명 옵션] "사용자 지정" 옵션 선택
        - "표준"을 선택하는 경우 "저장소" 설치된 인증서만 선택가능하다.
        - 인증서 파일을 직접 선택하기 위해서는 "사용자 지정"을 선택해야한다.

    4. [서명 인증서] "파일에서 선택" 버튼 클릭 후 인증서 파일(mycert.spc)을 선택한다.

    5. [개인 키 암호 입력] 인증서 비밀번호를 입력한다.

    6. [개인 키] 개인 키 파일(mycert.pvk)을 선택한다.

    7. [해시 알고리즘] "sha1"(기본)을 선택한다.

    8. [추가 인증서] "루트 인증서를 포함하여 인증 경로에 있는 모든 인증서"를 선택한다.
        - "테스트 인증서 만들기" 과정을 통해 만든 인증서(mycert.spc)에는 루트 인증서(root.cer) 정보가
          포함되어있으므로, 어느 항목을 선택하든 동일한 결과를 보인다.

    9. [데이터 설명] 게시자 설명과 게시자 정보 클릭에서 연결할 홈페이지 주소를 입력한다.

    10. [타임스탬프] 타임서버를 통해 인증시간을 기록한다.
        - 타임스탬프를 데이터를 생략해도 무관하지만, 타임스탬프 정보를 넣음으로서 신뢰성도를 높일 수 있다.
        - 또한 타임스탬프 정보를 통해 실제 디지털 서명한 시간을 기록으로 남길 수 있다.

    11. [디지털 서명 마법사 완료] 마법사 완료 전 설정 내용 확인

    12. [디지털 서명 마법사 완료] 마법사 정상 완료


▷ 디지털 서명 넣기 (도스창에서 서명 작업)
    - 다음의 도스명령으로 처리하면 번거로운 서명 작업을 쉽게 처리 할 수 있다.

    - signcode -spc "mycert.spc" -v "mycert.pvk" -n "EnjoyDev" -i "http://www.EnjoyDev.com" -t "http://timestamp.verisign.com/scripts/timestamp.dll" "Project1_cert.exe"
      ; 좀 길지만 하나의 문장이다.

    - 사용 형식
      ; signcode -spc "인증서파일" -v "개인키파일" -n "게시자설명" -i "홈페이지" -t "타임서버" "실행파일명"

    - 도스창에서 "signcode /?"를 입력하면 상세 설명을 볼 수 있다.


▷ 디지털 서명 확인
    - 도스창에서 "chktrust Project1_cert.exe"를 입력하면 다음과 같이 디지털 서명 결과를 볼 수 있다.

사용자 삽입 이미지




▣ Ver 0.1
    ; ActiveX 배포 관련 내용을 정리하다보니 많은 부분과 연결되고 있어 부분적으로 나누고 있습니다.
      추가적으로 정리되는 부분은 위 내용을 바탕으로 살을 붙여가도록 하겠습니다.


☞ 본문 출처 : http://www.enjoydev.com/blog/71

☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.

☞ 위 내용은 정식 문서 번역이 아닌, 실무 적용에 따른 경험을 바탕으로 어느정도 자의적인 설명이 포함되어있습니다.
   잘못된 내용이 있는 경우 지적 바랍니다.


▣ 참고 사이트
    * Signing and Checking Code with Authenticode
       ; http://msdn.microsoft.com/workshop/secu … ning.asp
    * .cab 파일 서명 단계
       ; http://support.microsoft.com/kb/247257/ko
728x90
ActiveX를 사용하는 경우 사용자에게 설치 여부를 묻는 확인 메세지가 나타나는데, OS와 인증서 종류에 따라 메세지 내용이 달라진다.

- 테스트에 사용된 인증서
    1. "신뢰된 루트 인증기관"에 등록된 인증서 (정식 인증서와 동일하게 작동)
    2. "신뢰된 루트 인증기관"에 등록되지 않은 인증서 (테스트 인증서와는 약간의 차이가 있음)
    3. 테스트 인증서

- 테스트 환경
    1. Windows XP (SP2) + IE 6.0
    2. Windows 2000 (SP4) + IE 6.0
    3. Windows98 SE + IE 5.0


[Windows XP (SP2) + IE 6.0]
1. "신뢰된 루트 인증기관"에 등록된 인증서 (정식인증서)
    - 기본 보안 설정 상태에서 설치 여부를 묻는 확인창이 나타난다.
    - 해당 사이트를 "신뢰할 수 있는 사이트"에 등록하면 사용자 확인 없이 설치되도록 할 수 있다.
      (보안 -> 신뢰할 수 있는 사이트 -> 보안 설정 ->서명된 ActiveX 컨트롤 다운로드를 "사용"으로 선택)

사용자 삽입 이미지


2. "신뢰된 루트 인증기관"에 등록되지 않은 인증서
    - WindowsXP Service Pack2부터 보안이 강화됨에 따라 서명 안된 ActiveX, 테스트 인증서를 이용한 ActiveX, "신뢰된 루트 인증기관"에 등록되지 않은 인증서를 이용하는 경우에는 설치 여부 확인이 아닌 "차단" 메세지가 나타난다.
    - ActiveX가 설치되도록하기 위해서는 인터넷 옵션에서 보안 설정을 낮추거나(비추), 해당 사이트를 "신뢰할 수 있는 사이트"에 추가하는 방법(추천)이 있다.

사용자 삽입 이미지


    - 또는 인증서의 발급자(ROOT CA 인증서)를 "신뢰된 루트 인증기관"에 설치(추천)하는 방법도 있다.
    - 단, 발급자가 "Root Agency"로 되어있는 테스트 인증서를 "신뢰된 루트 인증기관"에 추가하는 경우 테스트 인증서를 이용한 악성 ActiveX가 무분별하게 설치될 수 있으므로 주의해야한다.

사용자 삽입 이미지


3. 테스트 인증서를 이용하는 경우
    - 위와 마찬가지로 차단 메세지가 나타난다.

사용자 삽입 이미지


    - 해당 사이트를 "신뢰할 수 있는 사이트"에 등록하면 아래와 같이 설치 여부를 묻는 메세지가 나타난다.

사용자 삽입 이미지




[Windows 2000 (SP4) + IE 6.0]
1. "신뢰된 루트 인증기관"에 등록된 인증서 (정식인증서)
    -  게시자 정보와 함께 설치 확인 메세지가 나타난다.

사용자 삽입 이미지


2. "신뢰된 루트 인증기관"에 등록되지 않은 인증서
    - "경고" 메세지와 함께 게시자 정보, 설치 확인 메세지가 나타난다.
    - "정식인증서"와의 차이는 사용자에게 보여지는 "경고" 메세지 뿐이다.

사용자 삽입 이미지


3. 테스트 인증서를 이용하는 경우
    - 위와 마찬가지로 "경고" 메세지와 함께 설치 확인 메세지가 나타난다.
    - 경고 메세지에 "테스트 루트"라는 글자가 들어감으로 인해 사용자에게 신뢰감은 더욱 떨어져 보인다.

사용자 삽입 이미지




[Windows 98 SE + IE 5.0] : Windows2000 + IE 6.0과 별 차이가 없어 보인다.
1. "신뢰된 루트 인증기관"에 등록된 인증서 (정식인증서)

사용자 삽입 이미지


2. "신뢰된 루트 인증기관"에 등록되지 않은 인증서

사용자 삽입 이미지


3. 테스트 인증서를 이용하는 경우

사용자 삽입 이미지

 

☞ 본문 출처 : http://www.enjoydev.com/blog/80


☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.


☞ 위 내용은 정식 문서 번역이 아닌, 실무 적용에 따른 경험을 바탕으로 어느정도 자의적인 설명이 포함되어있습니다.

   잘못된 내용이 있는 경우 지적 바랍니다.

+ Recent posts