반응형


시스템 사양 아는 방법 홍지선 / yellowbug  
홍지선님께 메시지 보내기    홍지선님의 블로그가 없습니다  

 C#을 이용해서 다음과 같은 컴의 사양에 대해 알 수는 없을까요?

Environment로는 OS 종류하고 버전정도만 알 수 있는거 같던데, 다른 방법이 있겠죠?

 

1. OS (servicepack 포함)

2. CPU

3. VGA

4. Browser

5. RAM

6. NIC

 

 

고수님들의 지도 부탁드립니다.

감사 .

이 글에 평점 주기:  
  2005-03-08 오후 5:16:57   /  번호: 47834  / 평점:  (5.0)  
 Re: 아는 것만 ^^ 김성경 / lovelyk2  
김성경님께 메시지 보내기    김성경님의 블로그가 없습니다  

내용을 보니 그 중에 몇몇은 레지스트리에서 값을 읽어오면 될꺼 같군요.

 

http://www.theeldergeek.com/registry_edits.htm

 

여기에 보면 재미있는 레지스트리 값이 많이 있군요 ^^;;

 

혹시 필요한게 있나 찾아보세요~

 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

 

여기에 필요한 데이터들이 거의 다 있군요

 

RegEdit 쓰는 방법은 아시죠?

 

 

이 글에 평점 주기:  
  2005-03-10 오후 4:39:25   /  번호: 47950  / 평점:  (9.0)  
 Re: 첨부파일 있음여러가지 방법이 있을것 같네요 김태형 / kth0301  
김태형님께 메시지 보내기    김태형님의 블로그가 없습니다  

사실 저도 초보지만 데브피아에서 많은걸 배웁니다. 초보들한테는 참 좋은 사이트라 생각이 됩니다

 

사실 C#공부 하면서 많은 정보를 MSDN에서 배우게 됩니다. 님께서도 아시리라 믿습니다

 

일단 서버 및 로컬 컴의 시스템 자원 및 정보를 가져오는 방법은 여러가지가 있을거라 생각이 됩니다

 

1. 레지스트리를 가져오는 방법, 2. WMI를 이용하는 방법, 3. PerformanceCounter를 이용하는 방법 등

 

제가 아는 방법중에 WMI라는걸 이용하는 방법과 PerformanceCounter를 이용하는 방법이 있는데요

 

첫번째 방법 :  WMI는 Windows Management Instrumentation의 약자인데요 NT이상에서 지원하는 방법이라고 알고 있습니다

 

예제

                string cmd_info = "/C net use \\\\"+treeView1.SelectedNode.Text.ToString()+"\\c$"+" "+svr_passwd+" /user:"+svr_user;

 

                ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe",cmd_info);        

                startInfo.WindowStyle = ProcessWindowStyle.Hidden;      //화면에 표시 되지 않고 실행되는 프로퍼티

                Process.Start(startInfo);

 

                ConnectionOptions options = new ConnectionOptions();

 

                options.Username=svr_user;

                options.Password=svr_passwd;

                string address=treeView1.SelectedNode.Text.ToString();

 

                ManagementScope scope = new ManagementScope(@"\\"+address+"\\root\\cimv2",options);

                scope.Connect();

 

                ObjectQuery objQuery = new ObjectQuery("Select * from Win32_Processor");

                ManagementObjectSearcher query = new ManagementObjectSearcher(scope,objQuery);

                ManagementObjectCollection queryCollection = query.Get();       

 

                foreach(ManagementObject mo in queryCollection)

                {

                //  MessageBox.Show(mo["Caption"].ToString());

                }

 

설명 : 이건 제가 만든 소스인데요. 상단에 부분은 서버 연결 부분이고 ManagementScope부터 서버 정보 가져오는겁니다

 

         Win32_Processor로 CPU 관련된 모든걸 알수가 있습니다.

         Win32_OperatingSystem으로는 운영체제에 관한 모든걸 알아 낼수가 있구요

        

         MSDN에서 win32관련 내용과 ManagementScope 및 관련 내용을 조회하시면 다양한 샘플이 있을겁니다

         그걸 이용하시면 될것 같구요

 

두번째 방법 : PerformanceCounter는 NT이상에서 지원하는 성능모니터의 기능을 가져다 사용하는 방법입니다

 

예제

 

        PerformanceCounter를 이용하여 로컬컴의 CPU사용량 및 F드라이브 여유 공간을 실시간 확인하는 소스입니다

 

        소스를 보시면 아시겠지만 timer를 사용하면 interval로 값을 불러와서 뿌려주도록 되어 있습니다

 

        만약에 원격 컴퓨터에 있는 정보를 보실려면 WMI를 이용하거나 net use를 사용하여 서버에 임시로 연결한 후

    

        PC1.MachineName = 원격컴아이피;

        PC2.MachineName = 원격컴아이피;

 

        이런식으로 해주시면 되구요

 

        다양한 카테리고리 및 카운터 네임 그리고 인스턴스는 성능모니터에서 확인하실 수가 있습니다

 

        그렇게 되면 모든 서버 자원에 대한 정보를 알수가 있을겁니다

 

        이거 알아내는데 1주일 넘게 걸렸습니다. 아무리 찾아봐도 없더라구요.

 

        함 해보시고 궁금하신거 있으시면 연락주세요.

 

        private void Form1_Load(object sender, System.EventArgs e)

        {           

            PC1 = new PerformanceCounter("Processor","% Processor Time","_Total");

            PC2 = new PerformanceCounter("LogicalDisk","% Free Space","F:");

        }

 

        private void timer1_Tick(object sender, System.EventArgs e)

        {

            textBox1.Text = PC1.NextValue().ToString();

            textBox2.Text = PC2.NextValue().ToString();

        }       

 

짧은 지식으로 대충 적었네요. 참으로 프로그래머의 길은 멀고도 험한것 같습니다. 다같이 화이팅!!!

 

수고 하시고 제가 아는 선에선 정보 공유하겠습니다. 리플 다시구요

 

위에 내용 알아내는데 뭐 엄청난 시간이 지났습니다. 머리가 나쁜게 죄죠...ㅋㅋ

     

반응형

+ Recent posts