C# 确定可移动驱动器是否为只读

C# 确定可移动驱动器是否为只读,c#,.net,removable-storage,C#,.net,Removable Storage,我正在使用C#(.NET4.0)确定可移动驱动器是否为只读。我读过许多文章,详细介绍了使用以下源代码确定目录是否为只读的过程: 但是,我使用根目录尝试了这种方法,即使整个驱动器是只读的(我使用的是一个被锁定的SD卡),我也从未到达//IsReadOnly…。驱动器的内容无法保证(它可能是空的或有许多文件),因此测试任何子目录都是不可能的。我知道一个简单的测试是将一个小文件写入驱动器并捕获任何异常,但我更喜欢另一种方法 有人知道解决这个问题的好方法吗?你怎么能不出错呢。(di.Exists())应

我正在使用C#(.NET4.0)确定可移动驱动器是否为只读。我读过许多文章,详细介绍了使用以下源代码确定目录是否为只读的过程:

但是,我使用根目录尝试了这种方法,即使整个驱动器是只读的(我使用的是一个被锁定的SD卡),我也从未到达
//IsReadOnly…
。驱动器的内容无法保证(它可能是空的或有许多文件),因此测试任何子目录都是不可能的。我知道一个简单的测试是将一个小文件写入驱动器并捕获任何异常,但我更喜欢另一种方法


有人知道解决这个问题的好方法吗?

你怎么能不出错呢。(di.Exists())应为(di.Exists)。你确定folderName存在吗?确保路径没有问题。您是否熟悉
WMI
如果不熟悉,这里有一些很好的阅读资料,也是一个很好的起点啊,是的,我错过了代码中di.Exists()的问题。我实际上并没有检查以确保它存在于我的代码中,因为我使用DriveInfo.GetDrives()从LINQ查询中获取驱动器列表。我会把代码改成正确的。
var di = new DirectoryInfo(folderName);

if(di.Exists)
{
    if (di.Attributes.HasFlag(FileAttributes.ReadOnly))
    {
        //IsReadOnly...
    }
}