使用c#获取系统信息

时间:2014-11-02 08:23:38

标签: c#

我有一些问题(c#)。

  1. 我可以从win32-baseboard中检索一些主板信息,但是当我想获得Model时 但是累积了错误。

  2. 如何在Windows上获取已安装软件的列表(如xp)。

  3. 我们如何在Windows上获取已安装的外围设备列表(详细信息)(如扫描仪,网络摄像头)。

  4. 如何直接获得的ram(just)数量。

1 个答案:

答案 0 :(得分:1)

使用WMI(我怀疑你已经在使用它):

  1. 型号为空白。试试Manufacturer财产。同时获取Product属性以获取模型。

  2. 已安装的软件:获取Win32_Product课程。

  3. 尝试Win32_PnPSignedDriver课程并进行迭代。

  4. 使用Win32_ComputerSystem课程并获取TotalPhysicalMemory属性。

  5. 获取WMIEXPLORER并使用它。 LINK

    C#示例:

    如果您需要使用凭据(strUsername和strPassword变量)连接到远程计算机:

    private ManagementScope CreateNewManagementScope(string server) 
    { 
        string serverString = @"\\" + server + @"\root\cimv2"; 
    
        ManagementScope scope = new ManagementScope(serverString); 
    
        if (!chkUseCurrentUser.Checked) 
        { 
            ConnectionOptions options = new ConnectionOptions 
                              { 
                                  Username = strUsername, 
                                  Password = strPassword, 
                                  Impersonation = ImpersonationLevel.Impersonate, 
                                  Authentication = AuthenticationLevel.PacketPrivacy 
                              }; 
            scope.Options = options; 
        } 
    
        return scope; 
    }
    

    获取服务:

    private void GetServicesForComputer(string computerName) 
    { 
        ManagementScope scope = CreateNewManagementScope(computerName); 
    
        SelectQuery query = new SelectQuery("select * from Win32_Service"); 
    
        try 
        { 
            using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query)) 
            { 
                ManagementObjectCollection services = searcher.Get(); 
    
                List<string> serviceNames = 
                    (from ManagementObject service in services select service["Caption"].ToString()).ToList(); 
    
                lstServices.DataSource = serviceNames; 
            } 
        } 
        catch (Exception exception) 
        { 
            lstServices.DataSource = null; 
            lstServices.Items.Clear(); 
            lblErrors.Text = exception.Message; 
            Console.WriteLine(Resources.MainForm_GetServicesForServer_Error__ + exception.Message); 
        } 
    }
    

    来自wmiexplorer的一些屏幕:

    enter image description here enter image description here enter image description here enter image description here