【发布时间】:2020-09-02 13:01:40
【问题描述】:
我正在用 C# 开发一个应用程序,因此,如果用户确认从组合框列表中选择的用于格式化 USB 驱动器的消息框,驱动器将被格式化。
但是,我不知道如何处理这个问题 - 我有以下代码:
public static bool FormatDrive(string driveLetter,
string fileSystem = "FAT", bool quickFormat = false,
int clusterSize = 4096, string label = "", bool enableCompression = false)
{
if (driveLetter.Length != 2 || driveLetter[1] != ':' || !char.IsLetter(driveLetter[0]))
return false;
//query and format given drive
ManagementObjectSearcher searcher = new ManagementObjectSearcher
(@"select * from Win32_Volume WHERE DriveLetter = '" + driveLetter + "'");
foreach (ManagementObject vi in searcher.Get())
{
vi.InvokeMethod("Format", new object[] { fileSystem, quickFormat, clusterSize, label, enableCompression });
}
return true;
}
我不太确定this 的工作原理。这是处理格式化 USB 驱动器的正确方法吗?如果没有,有人能指出我正确的方向吗?
我曾尝试查看 Win32_Volume 类,但我还是不太明白它是如何工作的。 This 问题建议使用 CreateFile 函数。我还查看了this 网站。
任何将我推向正确方向的提示,将不胜感激。
【问题讨论】:
-
你真的需要完全格式化吗?还是您的目标只是删除其中的所有内容?
-
@CallumBradbury 需要完全格式化。但不能作为 QuickFormat 运行,因此将其设置为
false。 -
@user2754599 我也看过了。但这并不容易理解。至少,在我看来。
-
只是好奇,为什么您希望使用自定义 C# 程序完全格式化它?已经有可用的格式化工具。