Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WMI类引用_C#_Wmi - Fatal编程技术网

C# WMI类引用

C# WMI类引用,c#,wmi,C#,Wmi,我有以下问题: 我想使用WMI类获取登录用户的权限。 所以我试了一下: try { ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROMWin32_LoggedOnUser"); foreach (ManagementObject queryObj in searcher.Get()) {

我有以下问题: 我想使用WMI类获取登录用户的权限。 所以我试了一下:

    try
    {
        ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROMWin32_LoggedOnUser");
        foreach (ManagementObject queryObj in searcher.Get())
        {
            accounttype += queryObj["Antecedent"];
        }
    }
    catch
    {
        accounttype = "error";
    }
但这不起作用,因为queryObj返回对
Win32\u帐户的引用
! 我不知道如何读取此
Win32\u帐户的值
reference

顺便说一句, 我知道还有其他方法(比如
Environment.UserName
),但我想大致了解这些尊重


谢谢!

WMI类的
Antecedent
Dependent
属性返回a,这是WMI类实例的唯一id,您可以访问该类的数据,创建对象的实例,然后设置从对象获得的属性
路径

试试这个样品

using System;
using System.Collections.Generic;
using System.Management;
using System.Text;

namespace GetWMI_Info
{
    class Program
    {

        static void Main(string[] args)
        {
            try
            {
                ManagementScope Scope;
                Scope = new ManagementScope(String.Format("\\\\{0}\\root\\CIMV2", "localhost"), null);

                Scope.Connect();
                ObjectQuery Query = new ObjectQuery("SELECT * FROM Win32_LoggedOnUser");
                ManagementObjectSearcher Searcher = new ManagementObjectSearcher(Scope, Query);

                foreach (ManagementObject WmiObject in Searcher.Get())
                {
                    //Console.WriteLine("{0,-35} {1,-40}","Antecedent",WmiObject["Antecedent"]);// Reference
                    //Console.WriteLine("{0,-35} {1,-40}","Dependent",WmiObject["Dependent"]);// Reference
                    ManagementObject oAntecedent = new ManagementObject();
                    ManagementPath ObjectPath = new ManagementPath((String)WmiObject["Antecedent"]);//Win32_Account 
                    oAntecedent.Path = ObjectPath;
                    oAntecedent.Get();

                    Console.WriteLine("{0,-35} {1,-40}", "Caption", oAntecedent["Caption"]);// String
                    Console.WriteLine("{0,-35} {1,-40}", "Description", oAntecedent["Description"]);// String
                    Console.WriteLine("{0,-35} {1,-40}", "Domain", oAntecedent["Domain"]);// String
                    //Console.WriteLine("{0,-35} {1,-40}", "InstallDate", ManagementDateTimeConverter.ToDateTime((string)WmiObject["InstallDate"]));// Datetime
                    Console.WriteLine("{0,-35} {1,-40}", "LocalAccount", oAntecedent["LocalAccount"]);// Boolean
                    Console.WriteLine("{0,-35} {1,-40}", "Name", oAntecedent["Name"]);// String
                    Console.WriteLine("{0,-35} {1,-40}", "SID", oAntecedent["SID"]);// String
                    Console.WriteLine("{0,-35} {1,-40}", "SIDType", oAntecedent["SIDType"]);// Uint8
                    Console.WriteLine("{0,-35} {1,-40}", "Status", oAntecedent["Status"]);// String
                    Console.WriteLine();    
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(String.Format("Exception {0} Trace {1}",e.Message,e.StackTrace));
            }
            Console.WriteLine("Press Enter to exit");
            Console.Read();
        }
    }
}