S.l.e!ep.¢%

像打了激速一样,以四倍的速度运转,开心的工作
简单、开放、平等的公司文化;尊重个性、自由与个人价值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

GET LOCAL MACHINE DNS SERVER

Posted on 2010-05-17 16:43 S.l.e!ep.¢% 阅读(414) 评论(0)  编辑 收藏 引用 所属分类: VC
  1. // DNS_BrowserDlg.cpp : ÊµÏÖÎļþ    
  2. //    
  3.    
  4. #include "stdafx.h"    
  5. #include "DNS_Browser.h"    
  6. #include "DNS_BrowserDlg.h"    
  7. #include ".\dns_browserdlg.h"    
  8.    
  9. #ifdef _DEBUG    
  10. #define new DEBUG_NEW    
  11. #endif    
  12.    
  13.    
  14. // ÓÃÓÚÓ¦ÓóÌÐò¡°¹ØÓÚ¡±²Ëµ¥ÏîµÄ CAboutDlg ¶Ô»°¿ò    
  15.    
  16. class  CAboutDlg :  public  CDialog   
  17. {   
  18. public :   
  19.     CAboutDlg();   
  20. // ¶Ô»°¿òÊý¾Ý    
  21.      enum  { IDD = IDD_ABOUTBOX };   
  22.    
  23.      protected :   
  24.      virtual   void  DoDataExchange(CDataExchange* pDX);     // DDX/DDV Ö§³Ö    
  25.    
  26. // ÊµÏÖ    
  27. protected :   
  28.     DECLARE_MESSAGE_MAP()   
  29. };   
  30.    
  31. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)   
  32. {   
  33. }   
  34.    
  35. void  CAboutDlg::DoDataExchange(CDataExchange* pDX)   
  36. {   
  37.     CDialog::DoDataExchange(pDX);   
  38. }   
  39.    
  40. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)   
  41. END_MESSAGE_MAP()   
  42.    
  43.    
  44. // CDNS_BrowserDlg ¶Ô»°¿ò    
  45.    
  46.    
  47.    
  48. CDNS_BrowserDlg::CDNS_BrowserDlg(CWnd* pParent  /*=NULL*/ )   
  49.     : CDialog(CDNS_BrowserDlg::IDD, pParent)   
  50. {   
  51.     m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);   
  52. }   
  53.    
  54. void  CDNS_BrowserDlg::DoDataExchange(CDataExchange* pDX)   
  55. {   
  56.     CDialog::DoDataExchange(pDX);   
  57.     DDX_Control(pDX, IDC_LIST1, m_listDNS);   
  58. }   
  59.    
  60. BEGIN_MESSAGE_MAP(CDNS_BrowserDlg, CDialog)   
  61.     ON_WM_SYSCOMMAND()   
  62.     ON_WM_PAINT()   
  63.     ON_WM_QUERYDRAGICON()   
  64.      //}}AFX_MSG_MAP    
  65.     ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)   
  66. END_MESSAGE_MAP()   
  67.    
  68.    
  69. // CDNS_BrowserDlg ÏûÏ¢´¦Àí³ÌÐò    
  70.    
  71. BOOL  CDNS_BrowserDlg::OnInitDialog()   
  72. {   
  73.     CDialog::OnInitDialog();   
  74.    
  75.      // ½«\¡°¹ØÓÚ...\¡±²Ëµ¥ÏîÌí¼Óµ½ÏµÍ³²Ëµ¥ÖС£    
  76.    
  77.      // IDM_ABOUTBOX ±ØÐëÔÚϵͳÃüÁΧÄÚ¡£    
  78.     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);   
  79.     ASSERT(IDM_ABOUTBOX < 0xF000);   
  80.    
  81.     CMenu* pSysMenu = GetSystemMenu(FALSE);   
  82.      if  (pSysMenu != NULL)   
  83.     {   
  84.         CString strAboutMenu;   
  85.         strAboutMenu.LoadString(IDS_ABOUTBOX);   
  86.          if  (!strAboutMenu.IsEmpty())   
  87.         {   
  88.             pSysMenu->AppendMenu(MF_SEPARATOR);   
  89.             pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);   
  90.         }   
  91.     }   
  92.    
  93.      // ÉèÖô˶Ի°¿òµÄͼ±ê¡£µ±Ó¦ÓóÌÐòÖ÷´°¿Ú²»ÊǶԻ°¿òʱ£¬¿ò¼Ü½«×Ô¶¯    
  94.      //  Ö´Ðд˲Ù×÷    
  95.     SetIcon(m_hIcon, TRUE);          // ÉèÖôóͼ±ê    
  96.     SetIcon(m_hIcon, FALSE);         // ÉèÖÃСͼ±ê    
  97.    
  98.      // TODO: ÔÚ´ËÌí¼Ó¶îÍâµÄ³õʼ»¯´úÂë    
  99.        
  100.      return  TRUE;   // ³ý·ÇÉèÖÃÁ˿ؼþµÄ½¹µã£¬·ñÔò·µ»Ø TRUE    
  101. }   
  102.    
  103. void  CDNS_BrowserDlg::OnSysCommand( UINT  nID,  LPARAM  lParam)   
  104. {   
  105.      if  ((nID & 0xFFF0) == IDM_ABOUTBOX)   
  106.     {   
  107.         CAboutDlg dlgAbout;   
  108.         dlgAbout.DoModal();   
  109.     }   
  110.      else    
  111.     {   
  112.         CDialog::OnSysCommand(nID, lParam);   
  113.     }   
  114. }   
  115.    
  116. // Èç¹ûÏò¶Ô»°¿òÌí¼Ó×îС»¯°´Å¥£¬ÔòÐèÒªÏÂÃæµÄ´úÂë    
  117. //  À´»æÖƸÃͼ±ê¡£¶ÔÓÚʹÓÃÎĵµ/ÊÓͼģÐ͵ĠMFC Ó¦ÓóÌÐò£¬    
  118. //  Õ⽫ÓÉ¿ò¼Ü×Ô¶¯Íê³É¡£    
  119.    
  120. void  CDNS_BrowserDlg::OnPaint()    
  121. {   
  122.      if  (IsIconic())   
  123.     {   
  124.         CPaintDC dc( this );  // ÓÃÓÚ»æÖƵÄÉ豸ÉÏÏÂÎÄ    
  125.    
  126.         SendMessage(WM_ICONERASEBKGND,  reinterpret_cast < WPARAM >(dc.GetSafeHdc()), 0);   
  127.    
  128.          // Ê¹Í¼±êÔÚ¹¤×÷¾ØÐÎÖоÓÖР   
  129.          int  cxIcon = GetSystemMetrics(SM_CXICON);   
  130.          int  cyIcon = GetSystemMetrics(SM_CYICON);   
  131.         CRect rect;   
  132.         GetClientRect(&rect);   
  133.          int  x = (rect.Width() - cxIcon + 1) / 2;   
  134.          int  y = (rect.Height() - cyIcon + 1) / 2;   
  135.    
  136.          // »æÖÆͼ±ê    
  137.         dc.DrawIcon(x, y, m_hIcon);   
  138.     }   
  139.      else    
  140.     {   
  141.         CDialog::OnPaint();   
  142.     }   
  143. }   
  144.    
  145. //µ±Óû§Í϶¯×îС»¯´°¿Úʱϵͳµ÷Óô˺¯ÊýÈ¡µÃ¹â±êÏÔʾ¡£    
  146. HCURSOR  CDNS_BrowserDlg::OnQueryDragIcon()   
  147. {   
  148.      return   static_cast < HCURSOR >(m_hIcon);   
  149. }   
  150.    
  151. void  CDNS_BrowserDlg::OnBnClickedButton1()   
  152. {   
  153.      // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë    
  154.      LONG  lRtn;   
  155.      HKEY  hMainKey;   
  156.      TCHAR  szParameters[256];   
  157.    
  158.     _tcscpy(szParameters,_T( "SYSTEM\\ControlSet001\\Services\\Tcpip\\Parameters" ));   
  159.    
  160. //»ñµÃIPµØÖ·ºÍDNS½âÎöµÈÆäËûÉèÖà   
  161.    
  162.     m_listDNS.ResetContent();   
  163.    
  164.      HKEY  hNetCard = NULL;   
  165.      //m_TotalNetCards = GetMacAddress(m_MacAddr);    
  166.    
  167.     lRtn = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T( "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards" ),0,KEY_READ,&hNetCard);   
  168.      if (lRtn != ERROR_SUCCESS) //´Ë´¦Ê§°Ü¾Í·µ»Ø    
  169.     {   
  170.          if (hNetCard != NULL)   
  171.             ::RegCloseKey(hNetCard);   
  172.          return  ;   
  173.     }   
  174.        
  175.      DWORD  dwSubKeyNum = 0,dwSubKeyLen = 256;   
  176. //µÃµ½×Ó¼üµÄ¸öÊý£¬Í¨³£ÓëÍø¿¨¸öÊýÏàµÈ    
  177.     lRtn = ::RegQueryInfoKey(hNetCard,NULL,NULL,NULL,&dwSubKeyNum,&dwSubKeyLen,   
  178.         NULL,NULL,NULL,NULL,NULL,NULL);   
  179.      if (lRtn == ERROR_SUCCESS)   
  180.     {   
  181.          //m_TotalNetCards = dwSubKeyNum;//Íø¿¨¸öÊýÒÔ´ËΪÖ÷    
  182.          LPTSTR  lpszKeyName =  new   TCHAR [dwSubKeyLen + 1];   
  183.          DWORD  dwSize;   
  184.          for ( int  i = 0; i < ( int )dwSubKeyNum; i++)   
  185.         {   
  186.              TCHAR  szServiceName[256];   
  187.              HKEY  hNewKey;   
  188.              DWORD  dwType = REG_SZ,dwDataSize = 256;   
  189.             dwSize = dwSubKeyLen + 1;   
  190.             ::RegEnumKeyEx(hNetCard,i,lpszKeyName,&dwSize,NULL,NULL,NULL,NULL);   
  191.             lRtn = ::RegOpenKeyEx(hNetCard,lpszKeyName,0,KEY_READ,&hNewKey);   
  192.              if (lRtn == ERROR_SUCCESS)   
  193.             {   
  194.                 dwDataSize = 256;   
  195.                 lRtn = ::RegQueryValueEx(hNewKey,_T( "ServiceName" ),NULL,&dwType,( LPBYTE )szServiceName,&dwDataSize);   
  196.                  if (lRtn == ERROR_SUCCESS)   
  197.                 {   
  198.                      TCHAR  szNewKey[256];   
  199.                     wsprintf(szNewKey,_T( "%s\\Interfaces\\%s" ),szParameters,szServiceName);   
  200.                      HKEY  hTcpKey;   
  201.                     lRtn = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE,szNewKey,0,KEY_READ,&hTcpKey);   
  202.                      if (lRtn == ERROR_SUCCESS)   
  203.                     {   
  204.                         dwDataSize = 256;   
  205.                         ::RegQueryValueEx(hTcpKey,_T( "NameServer" ),NULL,&dwType,( LPBYTE )m_CardsNameServer[i],&dwDataSize);   
  206.                         m_listDNS.AddString(m_CardsNameServer[i]);   
  207.                     }   
  208.                     ::RegCloseKey(hTcpKey);   
  209.                 }   
  210.             }   
  211.             ::RegCloseKey(hNewKey);   
  212.         }   
  213.          delete [] lpszKeyName;   
  214.     }   
  215.     ::RegCloseKey(hNetCard);   
  216. }   

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理