Code lấy thông tin máy tính bằng C# (Tên máy, tài khoản người dùng, phiên bản hệ điều hành, địa chỉ MAC,...)

Đăng bởi : 11/20/2013



Code lấy tên máy, phiên bản HĐH, địa chỉ IP, địa chỉ MAC bằng C#

- Demo: https://www.dropbox.com/s/8xw85oo6xg8v86c/ThongTinHeDieuHanh.rar (52KB)
- Để lấy thông tin cơ bản như tên máy, tài khoản đăng nhập vào máy, phiên bản hệ điều hành ta sử đụng lớp Environment sẵn có để lấy những thông tin đó. Ví dụ: Environment.MachineName để lấy tên máy, Environment.UserName để lấy tài khoản đăng nhập vào máy,...

- Để lấy các địa chỉ IP mà máy đang có (Đang kết nối đến bao nhiêu mạng thì có bằng đó IP): http://www.thuvienwinform.tk/2013/10/code-lay-username-va-ip-cua-may.html

- Để lấy địa chỉ MAC ta sử dụng thêm using System.Net.NetworkInfomation;
Code lấy địa chỉ MAC như sau: (cảm ơn anh LNT đã share cho mình code này)

            /////////////////
            //Lấy địa chỉ MAC
            ////////////////  
            string DanhSachMAC = "";
            NetworkInterface[] DanhSachCardMang = NetworkInterface.GetAllNetworkInterfaces();
            for (int i = 0; i < DanhSachCardMang.Length; i++)
            {
                PhysicalAddress DiaChiMAC = DanhSachCardMang[i].GetPhysicalAddress();
                DanhSachMAC += DanhSachCardMang[i].Name + " : ";
                byte[] ByteDiaChi = DiaChiMAC.GetAddressBytes();
                for (int j = 0; j < ByteDiaChi.Length; j++)
                {
                    DanhSachMAC += ByteDiaChi[j].ToString("X2");
                    if (j != ByteDiaChi.Length - 1)
                    {
                        DanhSachMAC += "-";
                    }
                }
                DanhSachMAC += "\r\n";
                txtMAC.Text += DanhSachMAC;
            }

hoặc

            /////////////////
            //Lấy địa chỉ MAC
            ////////////////
            int l, i, j=0;
            string MAC;
            while (true)
            {
                try
                {
                    MAC = NetworkInterface.GetAllNetworkInterfaces()[j].GetPhysicalAddress().ToString(); //đến đây đã lấy được địa chỉ rồi nhưng chưa có dấu phân cách
                    l = MAC.Length - 1;
                    for (i = 0; i <= l; i++)
                    {
                        if (i % 2 == 0 && i != 0) txtMAC.Text += "-";
                        txtMAC.Text += MAC[i];
                    }
                    j++;
                    txtMAC.Text += "\r\n";
                }
                catch
                {
                    break;//Hết địa chỉ MAC rồi thì ngắt vòng lặp
                }
            }
Với cách 2 chạy lâu hơn rất nhiều :) khuyến cáo không nên dùng.


{ 15 comments }

  1. bạn ơi, nếu mình muốn lấy chỉ số RSSI của mạng wifi thì dùng code nào vậy bạn

    ReplyDelete
  2. @Tan Nguyenxin lỗi, mình lâu không vô email nên bây giờ mới thấy comment của bạn! Vấn đề bạn có thể giải quyết như sau:
    - Trong cmd có code: netsh wlan show networks mode = bssid

    https://lh6.googleusercontent.com/-rmYUpbmbLcU/UxLoGFBstdI/AAAAAAAACwo/MYqfxLc5p8Q/w677-h402-no/WifiList.jpg

    - Code này có thể hiển thị các mạng wifi trong khu vực, MAC, cường độ tín hiệu (cái bạn cần),...
    - Cài tiến code này một chút:
    netsh wlan show networks mode = bssid | findstr "Sign"
    thì nó sẽ hiển thị mỗi cường độ tín hiệu thôi
    Sau đó dùng code để lấy nó về là được

    ReplyDelete
    Replies
    1. bạn ơi dùng phần mềm nào đẻ viết code đó..

      Delete
  3. @Tan Nguyenxin lỗi, mình lâu không vô email nên bây giờ mới thấy comment của bạn! Vấn đề bạn có thể giải quyết như sau:
    - Trong cmd có code: netsh wlan show networks mode = bssid

    https://lh6.googleusercontent.com/-rmYUpbmbLcU/UxLoGFBstdI/AAAAAAAACwo/MYqfxLc5p8Q/w677-h402-no/WifiList.jpg

    - Code này có thể hiển thị các mạng wifi trong khu vực, MAC, cường độ tín hiệu (cái bạn cần),...
    - Cài tiến code này một chút:
    netsh wlan show networks mode = bssid | findstr "Sign"
    thì nó sẽ hiển thị mỗi cường độ tín hiệu thôi
    Sau đó dùng code để lấy nó về là được

    ReplyDelete
    Replies
    1. ah bạn ơi, mình xài XP sp2, khi vào cmd.exe gõ netsh thì nó ra nhưng thêm wlan thì nó không ra, giống như là không hỗ trợ cho xem netsh wlan hay sao ấy, chỉ có netsh lan thôi, với lại bạn chỉ mình code C# lấy cái RSSI luôn được không, chứ mình không thấy trong C# có lớp nào hổ trợ lấy thông tin W-Fi hết á

      Delete
    2. This comment has been removed by the author.

      Delete
    3. ý tưởng của mình là lợi dụng cái code cmd để lấy thông tin nhưng win xp lại k hỗ trợ ạ, hic. Bạn thử kiểm tra lại xem. Chạy cmd với quyền quản trị.

      Delete
    4. hay bạn thử tìm kiếm API wifi cho windown xem sao...có khi lại có cho C#

      Delete
    5. mình lấy PC cài win 7 ra dùng câu lệnh đó được rồi, nó ra được cái signal là số %, vậy mình phải viết code C# thế nào để đưa số % đó vào trong C# @@

      Delete
    6. có thể như này:

      private string cmd(string cmd)
      {
      Process p = new Process();
      p.StartInfo = new ProcessStartInfo("cmd", "/c\"" + cmd + "\"")
      {
      RedirectStandardOutput = true,
      UseShellExecute = false,
      CreateNoWindow = true,
      };
      p.Start();
      string output = "";
      output = p.StandardOutput.ReadToEnd();
      p.WaitForExit();
      return output;
      }

      Bạn để lại Email đc không...mình nghĩ có hàm API cho nó. Nếu bạn hoặc mình tìm ra thì chia sẻ cho tiền hì :) Chứ cái cmd này chác không phải cách chuẩn

      Delete
    7. Sửa lại nha private string CmdView(string cmd)
      và "cho tiền" = "cho tiện" ạ hì :)

      Delete
  4. bạn cho mình xin source được ko. email mình là congpho90[at]com cám ơn bạn

    ReplyDelete
    Replies
    1. https://www.dropbox.com/s/8xw85oo6xg8v86c/ThongTinHeDieuHanh.rar

      Delete
    2. congpho90[at]com@gmail.com ??

      Delete
  5. Chỉ lấy được MAC của server thôi bạn ơi, không lấy được của Client

    ReplyDelete

Nhận ngay 100$ cho VPS

Mua hàng ủng hộ page

Ủng hộ page

Nhãn

Code (45) Team Foundation Server (17) Database (14) News (14) product (13) toolbox (10) Linq (9) SoftDesign (8) XNA (6) API (5) Project (5) item (4)

- Bản quyền thuộc về Thư Viện WinForm - Giao diện: Metrominimalist - Thiết kế: Johanes Djogan -