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