我一直在編寫列出磁盤所有分區的代碼,並且發現了一個問題。 WMI的Win32_DiskDrive
屬性Partitions
告訴我,一個測試磁盤有5個分區,但我只能列出其中的4個(最後兩個分區顯示爲只有一個)。最後兩個分區是主要的,但其中一個是SWAP分區,另一個是Linux分區。列出C#中的所有磁盤分區
回答
我相信你想要的是string[] System.IO.Directory.GetLogicalDrives()
。
你所得到使用GetLogicalDrives
每個string
,你可以創建一個System.IO.DriveInfo
對象,這將提供各種信息有關的邏輯驅動器。
DriveInfo.GetDrives()
可能是上述兩個步驟的捷徑。儘管如此,我還不完全確定,而且文件不是很清楚。
我會嘗試使用'string [] System.IO.Directory.GetLogicalDrives()',我會告訴我的經驗 –
此代碼返回相同的,只有3個驅動器,與Windows在我的電腦中顯示的驅動器相同窗口... –
我想這應該做的伎倆:
/// <summary>
/// Loads all Drives of the Computer and returns a List.
/// </summary>
private List<DriveInfo> LoadDrives()
{
var drives = new List<DriveInfo>();
foreach (DriveInfo drive in DriveInfo.GetDrives())
{
if (drive.IsReady)
{
drives.Add(drive);
}
}
return drives;
}
如果你真的想,你可以用'yield return'替換'drives.Add'並返回一個'IEnumerable'。就像建議一樣。 – gunr2171
我試過了,但是這個代碼只返回3個驅動器,並且Windows磁盤管理顯示5 ... –
是的,這是真的,也許更優雅:) –
- 1. 列出磁盤上的所有分區
- 2. 磁盤分區
- 3. 如何僅使用Get-PSDrive列出有效安裝的磁盤分區?
- 4. 在分區磁盤的bash腳本中出現錯誤
- 5. 如何查找在C#中保存給定分區的磁盤?
- 6. 磁盤io隊列溢出
- 7. 獲取其中所有硬盤和分區的序列號
- 8. 分區表,我的硬盤上的不同磁盤上的每個分區
- 9. Mac分析自由扇區磁盤
- 10. Linux發現磁盤和分區
- 11. 從磁盤分區打印文件名
- 12. 週期中的所有磁盤陣列的鍵
- 13. 甲骨文 - 錯誤的交換磁盤分區列表 - 範圍分區
- 14. 磁盤扇區讀取目標c
- 15. 我如何使用PHPseclib總和(每個分區的)所有磁盤大小
- 16. 在C中列出其驅動程序的磁盤驅動器#
- 17. Websphere MQ - 隊列中所有消息佔用的磁盤空間?
- 18. 關於FreeBSD磁盤分區/分區命名
- 19. 在LynxOS上格式化磁盤並在C上創建分區
- 20. Java溢出到磁盤的FIFO隊列
- 21. 用Perl腳本重新加載磁盤分區列表
- 22. 託管磁盤和非託管磁盤之間的區別
- 23. JVM是否攔截磁盤事務/有其自己的磁盤緩衝區?
- 24. 填入一個EXT4分區的磁盤中的腳本
- 25. 列出文件中的所有#區域
- 26. 保存與列表列的磁盤到磁盤
- 27. 列出除DVD驅動器以外的所有磁盤,而不使用DriveInfo.GetDrives
- 28. 如何在.NET中獲得磁盤的分區UUID
- 29. RabbitMQ溢出隊列到磁盤
- 30. 如何使用java列出gephi中所有分區的節點?
我們可以看到代碼,你試過? – gunr2171
@KenWhite,我只會同意,如果OP實際上想要使用WMI的方法,而不是蒂姆的答案。 – gunr2171
我試過這個代碼 'code'var搜索=新ManagementObjectSearcher( 「SELECT * FROM Win32_DiskPartition);
的foreach(在searcher.Get()VAR queryObj)
{
Console.WriteLine(」 --- --------------------------------「);
Console.WriteLine(」Win32_DiskPartition instance「);
Console .WriteLine(「Name:{0}」,(string)queryObj [「Name」]);
Console.WriteLine(「Index:{0}」,(uint)queryObj [「Index」]);
Console .WriteLine(「DeviceID:{0}」,(string)queryObj [「DeviceID」]);
}' –