监控磁盘空间

时间:2022-09-28 08:50:55
如果想监控几个服务器的磁盘使用情况应该如何写?
1.之前有用过累加磁盘中文件,然后得到一个已使用的值
2.查看MSDN之后发现有一个DriveInfo类可以获得磁盘的详细信息,但是DriveInfo类只能显示有关当前系统中所有驱动器的信息,不能查看其他服务器磁盘使用情况,也不可能写一段程序放到各个机器上。
想通过一个程序,只需要配置监控磁盘的路径,就可以获得磁盘信息。各位有没有好的办法?

8 个解决方案

#2


用的时候右键你的项目,添加引用,在弹出来的选项卡选择.net,然后找到system.managment就行了

#3


非常感谢,麻烦再问一下System.Management.ManagementScope Ms = new ManagementScope (  "\\root\\cimv2" , Conn ) 是什么意思啊?在Windows中应该如何写呀?

#5


[DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
  static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,  
  out ulong lpFreeBytesAvailable,  
  out ulong lpTotalNumberOfBytes,  
  out ulong lpTotalNumberOfFreeBytes);


ulong FreeBytesAvailable;
ulong TotalNumberOfBytes;
ulong TotalNumberOfFreeBytes;

bool success = GetDiskFreeSpaceEx("C:\\", out FreeBytesAvailable, out TotalNumberOfBytes,
  out TotalNumberOfFreeBytes);
if (!success)
  throw new System.ComponentModel.Win32Exception();

Console.WriteLine("Free Bytes Available: {0,15:D}", FreeBytesAvailable);
Console.WriteLine("Total Number Of Bytes: {0,15:D}", TotalNumberOfBytes);
Console.WriteLine("Total Number Of FreeBytes: {0,15:D}", TotalNumberOfFreeBytes); 


http://topic.csdn.net/u/20090809/08/e42bebe7-8dca-4fde-a8c7-bfc4b6e71ad8.html

#6


2 楼正解,感谢yalan帮忙。问题已经搞定。

#7


yalan,我想问您一下。为什么我检查网络磁盘(DriveType = 4)的时候有的显示不出来,显示出来的有的拿不到大小。看到请回复一下

#8


DriveType 枚举
定义驱动器类型常数,包括 CDRom、Fixed、Network、NoRootDirectory、Ram、Removable 和 Unknown。


 成员名称             说明 
 Unknown            驱动器类型未知。 
 NoRootDirectory    此驱动器没有根目录。 
 Removable          此驱动器是一个可移动存储设备,如软盘驱动器或 USB 闪存驱动器。 
 Fixed              此驱动器是一个固定磁盘。 
 Network            此驱动器是一个网络驱动器。 
 CDRom              此驱动器是一个光盘设备,如 CD 或 DVD-ROM。 
 Ram                此驱动器是一个 RAM 磁盘。 


以上摘自MSDN

如果显示不出来大小,是否有权限?DriveType=4说明该驱动器是网络驱动器,是否有权限获取器大小?

#1


#2


用的时候右键你的项目,添加引用,在弹出来的选项卡选择.net,然后找到system.managment就行了

#3


非常感谢,麻烦再问一下System.Management.ManagementScope Ms = new ManagementScope (  "\\root\\cimv2" , Conn ) 是什么意思啊?在Windows中应该如何写呀?

#4


#5


[DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
  static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,  
  out ulong lpFreeBytesAvailable,  
  out ulong lpTotalNumberOfBytes,  
  out ulong lpTotalNumberOfFreeBytes);


ulong FreeBytesAvailable;
ulong TotalNumberOfBytes;
ulong TotalNumberOfFreeBytes;

bool success = GetDiskFreeSpaceEx("C:\\", out FreeBytesAvailable, out TotalNumberOfBytes,
  out TotalNumberOfFreeBytes);
if (!success)
  throw new System.ComponentModel.Win32Exception();

Console.WriteLine("Free Bytes Available: {0,15:D}", FreeBytesAvailable);
Console.WriteLine("Total Number Of Bytes: {0,15:D}", TotalNumberOfBytes);
Console.WriteLine("Total Number Of FreeBytes: {0,15:D}", TotalNumberOfFreeBytes); 


http://topic.csdn.net/u/20090809/08/e42bebe7-8dca-4fde-a8c7-bfc4b6e71ad8.html

#6


2 楼正解,感谢yalan帮忙。问题已经搞定。

#7


yalan,我想问您一下。为什么我检查网络磁盘(DriveType = 4)的时候有的显示不出来,显示出来的有的拿不到大小。看到请回复一下

#8


DriveType 枚举
定义驱动器类型常数,包括 CDRom、Fixed、Network、NoRootDirectory、Ram、Removable 和 Unknown。


 成员名称             说明 
 Unknown            驱动器类型未知。 
 NoRootDirectory    此驱动器没有根目录。 
 Removable          此驱动器是一个可移动存储设备,如软盘驱动器或 USB 闪存驱动器。 
 Fixed              此驱动器是一个固定磁盘。 
 Network            此驱动器是一个网络驱动器。 
 CDRom              此驱动器是一个光盘设备,如 CD 或 DVD-ROM。 
 Ram                此驱动器是一个 RAM 磁盘。 


以上摘自MSDN

如果显示不出来大小,是否有权限?DriveType=4说明该驱动器是网络驱动器,是否有权限获取器大小?