(10101101)173/C#2009. 3. 20. 12:33
레지스트를 읽어와 윈도우 정보를 가져와 보도록 하겠습니다. 이를 위해서는 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값이 날짜 값으로 변환된것을 확인할 수 있습니다.

Visual Studio 2008에서 만들었으며 .NET Framework 2.0이상에서 동작합니다.
Posted by Special Alex