使用ManagementObjectSearcher 如何获取
时间: 2024-02-25 09:51:16 浏览: 225
通过 `ManagementObjectSearcher` 类,可以使用 WMI (Windows Management Instrumentation) 查询系统信息。以下是使用 `ManagementObjectSearcher` 获取磁盘信息的示例代码:
```csharp
using System.Management;
// 获取磁盘信息
string driveName = System.IO.Path.GetPathRoot(System.Reflection.Assembly.GetExecutingAssembly().Location);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(string.Format("SELECT * FROM Win32_LogicalDisk WHERE DeviceID='{0}'", driveName));
foreach (ManagementObject queryObj in searcher.Get())
{
// 获取磁盘总量
long totalSizeInBytes = (long)queryObj["Size"];
// 获取磁盘使用量
long usedSizeInBytes = (long)queryObj["Size"] - (long)queryObj["FreeSpace"];
// 获取磁盘剩余空间信息
long freeSpaceInBytes = (long)queryObj["FreeSpace"];
// 获取当前应用程序使用量
long currentAppSizeInBytes = 0;
foreach (var process in System.Diagnostics.Process.GetProcesses())
{
try
{
currentAppSizeInBytes += process.WorkingSet64;
}
catch (System.ComponentModel.Win32Exception)
{
// 忽略访问权限不足的进程
}
}
// 将结果输出到控制台
Console.WriteLine("Total size: {0} bytes", totalSizeInBytes);
Console.WriteLine("Used size: {0} bytes", usedSizeInBytes);
Console.WriteLine("Free space: {0} bytes", freeSpaceInBytes);
Console.WriteLine("Current app size: {0} bytes", currentAppSizeInBytes);
}
```
需要注意的是,这种方式需要使用管理员权限运行程序。另外,由于查询 WMI 信息可能会影响系统性能,建议尽量避免频繁查询。
阅读全文