Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- javaScriptError
- 자바스크립트날짜
- 사례관리
- forof문
- 이행은이미다른
- 장고웹
- 장고웹프로젝트
- 장고
- cmd명령어
- 자바스크립트for문
- speechtoText
- 개발
- 자바스크립트날짜형식
- Android
- 안드로이드
- 자바스크립트수학
- PostgreSQL
- 자바스크립트날짜get
- 파이썬
- 다른테이블에속해있습니다
- sqlite
- 장고프로젝트
- 오류종류
- speechAPI
- 이행은이미다른테이블에속해있습니다
- R데이터분석
- 자바스크립트forinforof차이
- 청소년복지론
- webkitrecognition
- Python
Archives
- Today
- Total
EMDI는 지금도 개발중
C# : 공인인증서 NPKI 폴더 위치 찾기 및 콤보박스에 목록 보여주기 본문
이번 글에서는 yessign 폴더에 있는 공인인증서의 이름을 콤보박스에 넣는 방법에 대해 알아보도록 합시다.
// 전역변수
// 인증서 콤보박스에 쓸 DataTable
DataTable _dtCertInfo = new DataTable();
// 생성자
public Form1()
{
InitializeComponent();
// 콤보박스 초기
setComboBox();
}
// 콤보박스 초기작업
private void setComboBox()
{
_dtCertInfo = new DataTable();
// NPKI를 컬럼에 추가
if (!_dtCertInfo.Columns.Contains("NPKI")) _dtCertInfo.Columns.Add("NPKI");
// _dtCertInfo을 콤보박스에 세팅
cmbCert.DataSource = _dtCertInfo;
cmbCert.DisplayMember = "NPKI";
cmbCert.ValueMember = "NPKI";
}
// 가져오기 버튼 이벤트
private void btnCertInfo_Click(object sender, EventArgs e)
{
appdataNPKI();
programNPKI();
ProgramX86NPKI();
}
private void appdataNPKI()
{
string path = string.Empty;
string strsub = string.Empty;
DataTable dt = new DataTable();
dt.Columns.Add("NPKI");
DataRow dr = null;
path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile).ToString();
path += "\\AppData\\LocalLow\\NPKI\\yessign\\User\\";
// 우선 해당 폴더가 있는지부터 체크
DirectoryInfo dir = new DirectoryInfo(path);
if(dir.Exists == true)
{
foreach (var item in dir.GetDirectories())
{
dr = dt.Rows.Add();
dr["NPKI"] = item.Name.ToString();
}
}
if(dt.Rows.Count>0)
{
_dtCertInfo.Merge(dt);
}
}
private void programNPKI()
{
string path = string.Empty;
string strsub = string.Empty;
DataTable dt = new DataTable();
dt.Columns.Add("NPKI");
DataRow dr = null;
path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles).ToString();
path += "\\NPKI\\yessign\\User\\";
// 우선 해당 폴더가 있는지부터 체크
DirectoryInfo dir = new DirectoryInfo(path);
if (dir.Exists == true)
{
foreach (var item in dir.GetDirectories())
{
dr = dt.Rows.Add();
dr["NPKI"] = item.Name.ToString();
}
}
if (dt.Rows.Count > 0)
{
_dtCertInfo.Merge(dt);
}
}
private void ProgramX86NPKI()
{
string path = string.Empty;
string strsub = string.Empty;
DataTable dt = new DataTable();
dt.Columns.Add("NPKI");
DataRow dr = null;
path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86).ToString();
path += "\\NPKI\\yessign\\User\\";
// 우선 해당 폴더가 있는지부터 체크
DirectoryInfo dir = new DirectoryInfo(path);
if (dir.Exists == true)
{
foreach (var item in dir.GetDirectories())
{
dr = dt.Rows.Add();
dr["NPKI"] = item.Name.ToString();
}
}
if (dt.Rows.Count > 0)
{
_dtCertInfo.Merge(dt);
}
}
어떤 블로그에서 정리한걸 토대로 만든 소스입니다. 메소드마다 보시면 알 수 있듯이 NPKI가 있는 3개의 경로를 string변수에 넣고 그걸 DirectoryInfo를 사용해서 User폴더가 있는지에 대한 유무와 해당 인증서 이름을 가져올 수 있었습니다.
// NPKI 경로를 따기 전 root
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile).ToString();
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86).ToString();
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles).ToString();
NPKI 경로는 Environment를 이용해서 조금 더 편하게 가져올 수 있었네요.
단, 여기서 문제가 하나 있었으니 바로 Program Files입니다. 위의 소스대로 하면 제 컴퓨터에서는 ProgramFiles와 ProgramFilesX86이 구분되서 안나오고 둘다 ProgramFilesX86경로로 되더군요. 그러기에 살짝 수정하였습니다.
private string GetProgramFilesFolder()
{
string szPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
szPath = szPath.Substring(0, 3);
return szPath + "Program Files";
}
private string GetProgramFilesX86Folder()
{
string szPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
szPath = szPath.Substring(0, 3);
return szPath + "Program Files (x86)";
}
위와 같이 변경하시거나 아니면 ProgramFiles메소드만 이용해도 무관할 듯 하네요~
해당 내용은 디렉터리의 이름만 가져온 내용입니다.
다음 글에서는 인증서의 정보를 어디까지 뽑아서 정리할 수 있는지에 대해 공부해보도록 하겠습니다.
'언어 > C#' 카테고리의 다른 글
C# : SQLite 사용 ExecuteNonQuery(), ExecuteReader() (0) | 2020.04.06 |
---|---|
C# : SQLite Create Database 데이터베이스 파일 생성하는 방법 (0) | 2020.04.03 |
C# : DBConnection 이용해서 SQLite 연결 및 쿼리 실행 (0) | 2020.03.31 |
C# : 데이터베이스 연결 및 MS-SQL 쿼리 쓰기 (0) | 2020.03.31 |
C# : SignedXml을 이용한 ds:Signature만드는 방법 (0) | 2020.03.27 |
Comments