gpt4 book ai didi

c# - 以编程方式格式化 USB 驱动器

转载 作者:行者123 更新时间:2023-12-04 18:02:15 27 4
gpt4 key购买 nike

我正在用 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网站。

任何将我推向正确方向的提示,将不胜感激。

最佳答案

也许我有另一种方法:

    public static bool FormatDrive_CommandLine(char driveLetter, string label = "", string fileSystem = "NTFS", bool quickFormat = true, bool enableCompression = false, int? clusterSize = null)
{
#region args check

if (!Char.IsLetter(driveLetter) ||
!IsFileSystemValid(fileSystem))
{
return false;
}

#endregion
bool success = false;
string drive = driveLetter + ":";
try
{
var di = new DriveInfo(drive);
var psi = new ProcessStartInfo();
psi.FileName = "format.com";
psi.CreateNoWindow = true; //if you want to hide the window
psi.WorkingDirectory = Environment.SystemDirectory;
psi.Arguments = "/FS:" + fileSystem +
" /Y" +
" /V:" + label +
(quickFormat ? " /Q" : "") +
((fileSystem == "NTFS" && enableCompression) ? " /C" : "") +
(clusterSize.HasValue ? " /A:" + clusterSize.Value : "") +
" " + drive;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.RedirectStandardOutput = true;
psi.RedirectStandardInput = true;
var formatProcess = Process.Start(psi);
var swStandardInput = formatProcess.StandardInput;
swStandardInput.WriteLine();
formatProcess.WaitForExit();
success = true;
}
catch (Exception) { }
return success;
}

先是自己写代码,现在在http://www.metasharp.net/index.php/Format_a_Hard_Drive_in_Csharp上找到了完美的方法

评论中问题的答案:

Remove the /q if you don't want it to quick format

/x parameter forces the selected volume to dismount, if needed.

来源:http://ccm.net/faq/9524-windows-how-to-format-a-usb-key-from-the-command-prompt

psi.CreateNoWindow = true;

隐藏终端,使您的应用程序看起来流畅。我的建议是在调试时显示它。

你要调用的是如果驱动器是F:/例如:

FormatDrive_CommandLine('F', "formattedDrive", "FAT32", false, false);

关于c# - 以编程方式格式化 USB 驱动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33120387/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com