본문 바로가기
C#/c#

[C#] [File] 레지스트리 읽어오기

by izen8 2012. 1. 25.
반응형
레지스트를 읽어와 윈도우 정보를 가져와 보도록 하겠습니다. 이를 위해서는 Registry 클래스가 필요한대 이 클래스에 사용을 위해서 다음에 using문을 추가합니다.

 
using Microsoft.Win32;

일반 string변수에 가지고온 레지스트 값을 넣으면 되는대 방법은 다음과 같습니다.

 
string regKeyUser = "";
regKeyUser = Convert.ToString(Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\"
+ @"Microsoft\Windows NT\CurrentVersion", "RegisteredOwner", "EMPTY"));
TbxUser.Text = regKeyUser;

string regKeyUser변수를 선언하고 레지스트 값을 string형식으로 가지고와 regKeyUser변수에 넣습니다. 그리고 TbxUser 텍스트 박스에 그 값을 출력합니다. "HKEY_LO~"부분은 가져올 레지스트 주소이고 "RegisteredOwner"는 해당 주소에 들어있는 키값을 말하며 인스톨시 입력한 사용자명 입니다. 그 뒤에 "EMPTY"부분은 만약 키에 아무값도 들어있지 않다면 대신 출력해줄 값입니다. 다음 프로그램은 이런 식으로 7개의 레지스트값을 가지고 오는 프로그램입니다.

[그림 1. 윈도우 정보를 읽어오는 프로그램]

 string regAddCurrVer = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion";
string regKeyCompa = "";
string regKeyUser = "";
string regKeyLoginUser = "";
string regKeyVer = "";
string regKeyBuildNum = "";
string regKeyCSDVer = "";
string regKeyInstDate = "";
string regKeyProductName = "";

private void BtnView_Click(object sender, EventArgs e)
{
 regKeyUser = Convert.ToString(Registry.GetValue(regAddCurrVer, "RegisteredOwner", "EMPTY"));
 TbxUser.Text = regKeyUser;

 regKeyCompa = Convert.ToString(Registry.GetValue(regAddCurrVer, "RegisteredOrganization", "EMPTY"));
 TbxCompa.Text = regKeyCompa; 

 regKeyLoginUser = Convert.ToString(Registry.GetValue(regAddCurrVer + @"\Winlogon","DefaultUserName", "EMPTY"));
 TbxLoginUser.Text = regKeyLoginUser; 

 regKeyVer = Convert.ToString(Registry.GetValue(regAddCurrVer, "CurrentVersion", "EMPTY"));
 TbxVer.Text = regKeyVer; 

 regKeyBuildNum = Convert.ToString(Registry.GetValue(regAddCurrVer, "CurrentBuildNumber", "EMPTY"));
 TbxBuildNum.Text = regKeyBuildNum; 

 regKeyCSDVer = Convert.ToString(Registry.GetValue(regAddCurrVer, "CSDVersion", "EMPTY"));
 TbxCSDVer.Text = regKeyCSDVer; 

 regKeyInstDate = Convert.ToString(Registry.GetValue(regAddCurrVer, "InstallDate", "EMPTY"));
 TbxInstDate.Text = regKeyInstDate;
 
 regKeyProductName = Convert.ToString(Registry.GetValue(regAddCurrVer, "ProductName", "EMPTY"));
 TbxProducName.Text = regKeyProductName;
}


문제는 그림 1을 보시면 InsallDate부분이 일반적인 시간으로 표현되지 않습니다. 이 수 를 정확한 값으로 보려면 다른 프로그램이 필요한대 이곳을 누르시면 다운을 받으실 수 있습니다. 이 프로그램을 실행할 때 MSVBVM60.DLL파일이 필요로 합니다. 이 파일이 없어 에러 메시지가 표시 된다면 C:\Windows\System32폴더에 MSVBVM60.DLL파일을 다운받아 넣어주시면 됩니다. 다운은 이곳(DllDump)에서 받으시면 됩니다.

[그림 2. InstallDate값을 Decode해주는 DCode Date]

DCode Date에 의하면 2008년 7월 27일 일요일 17시 07분 이라고 나와 잇습니다. 이를 확인해 보기 위해 C:\Windows폴더에 등록정보를 확인해 보면

[그림 3. C:\Windows 폴더의 등록 정보]

약간의 시간차가 나지만(윈도우 설치시 포멧 후 설치파일 복사하기 위해 Windows폴더를 생성한 시간과 윈도우 설치를 종료한 시간의 차이)InstallDate값이 날짜 값으로 변환된것을 확인할 수 있습니다.
반응형

댓글