레지스트를 읽어와 윈도우 정보를 가져와 보도록 하겠습니다. 이를 위해서는 Registry 클래스가 필요한대 이 클래스에 사용을 위해서 다음에 using문을 추가합니다.
일반 string변수에 가지고온 레지스트 값을 넣으면 되는대 방법은 다음과 같습니다.
string regKeyUser변수를 선언하고 레지스트 값을 string형식으로 가지고와 regKeyUser변수에 넣습니다. 그리고 TbxUser 텍스트 박스에 그 값을 출력합니다. "HKEY_LO~"부분은 가져올 레지스트 주소이고 "RegisteredOwner"는 해당 주소에 들어있는 키값을 말하며 인스톨시 입력한 사용자명 입니다. 그 뒤에 "EMPTY"부분은 만약 키에 아무값도 들어있지 않다면 대신 출력해줄 값입니다. 다음 프로그램은 이런 식으로 7개의 레지스트값을 가지고 오는 프로그램입니다.
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값이 날짜 값으로 변환된것을 확인할 수 있습니다.
Visual Studio 2008에서 만들었으며 .NET Framework 2.0이상에서 동작합니다.