无法格式化驱动器(未知错误)

时间:2014-11-16 23:55:28

标签: c# format wmi

我正在使用WMI Volume ManagementObject格式化驱动器(Docs)。如果我尝试从非提升的应用程序执行此操作,我会得到3(拒绝访问)的结果代码,这是有道理的。以管理员身份运行应用程序意味着我得到18(未知错误)的返回码。

ManagementObjectSearcher searcher = new ManagementObjectSearcher(
    String.Format("select * from Win32_Volume WHERE DriveLetter = \"{0}\"", Drive));

foreach (ManagementObject vi in searcher.Get()) {
    FormatResult result = (FormatResult)(int)(uint)vi.InvokeMethod("Format", new object[] { FileSystem, QuickFormat, ClusterSize, Label, EnableCompression });
    if (result != FormatResult.Success) {
        throw new FormatFailedException(String.Format("{0} (Error code {1})", result.ToString(), (int)result));
    }
}

参数:

FileSystem: "NTFS"
Quick: false
ClusterSize: 4096
Label: "Test"
EnableCompression: false

我可以通过资源管理器使用上述参数格式化驱动器,没有任何问题。如何诊断问题并了解发生了什么?

由于似乎存在一些混淆,FormatResult只是一个简化处理返回代码的枚举...

enum FormatResult {
    Success = 0,
    UnsupportedFileSystem = 1,
    IncompatibleMediaInDrive = 2,
    AccessDenied = 3,
    CallCanceled = 4,
    ...
    UnknownError = 18
}

要了解我在做什么:

Screenshot

由于文档提到这个方法通常是异步调用的,所以我尝试切换到具有相同结果的Async调用(可根据请求提供代码)。我还尝试了各种FileSystem(NTFS / FAT32),ClusterSize(包括0以让系统选择默认值)和Quick / Full格式的组合。所有都给出18的相同结果。

我错过了什么?

0 个答案:

没有答案