有的电脑 需要安装 fromwor3.5
class Program
{
static List<string> filesa = new List<string>();
List<string> files = new List<string>();
static void Main(string[] args)
{
var aa = GetRemovableDeviceID();
StringBuilder sb = new StringBuilder();
Console.WriteLine(sb.ToString());
foreach (var item in aa)
{
GetAllDirectories(item + "\\");
}
foreach (var item in filesa)
{
var da = sb.Append(item+Environment.NewLine);
}
File.WriteAllText("文件.txt", sb.ToString());
Console.WriteLine("Ok");
Console.ReadKey();
}
private static void GetAllDirectories(string rootPath)
{
DirectoryInfo di = new DirectoryInfo(rootPath);
string attributes = di.Attributes.ToString();
DirectorySecurity s = new DirectorySecurity(rootPath, AccessControlSections.Owner);
//try
//{
//!s.AreAccessRulesProtected &
//判断目录是否 可以访问 Directory
if (!s.AreAccessRulesProtected & !rootPath.Contains("Windows") & !di.Attributes.ToString().Contains("NotContentIndexed") & (!di.Attributes.ToString().ToLower().Contains("hidden")|| rootPath.Contains("C")))//& !rootPath.Contains("Documents and Settings")
{
string[] subPaths = System.IO.Directory.GetDirectories(rootPath);//得到所有子目录
foreach (string path in subPaths)
{
try
{
Console.WriteLine(path);
GetAllDirectories(path);//对每一个字目录做与根目录相同的操作:即找到子目录并将当前目录的文件名存入List
}
catch (Exception ex)
{
DirectoryInfo d2i = new DirectoryInfo(path);
string aaaa = d2i.Attributes.ToString();
var aa = !d2i.Attributes.ToString().ToLower().Contains("hidden");
//AddSecurityControll2File(path);
Console.WriteLine(path);
//GetAllDirectories(path);//对每一个字目录做与根目录相同的操作:即找到子目录并将当前目录的文件名存入List
//throw;
}
}
string[] files = System.IO.Directory.GetFiles(rootPath);
foreach (string file in files)
{
Console.WriteLine(file);
filesa.Add(file);//将当前目录中的所有文件全名存入文件List
}
}
//}
//catch (Exception ex)
//{
// Console.WriteLine(ex);
// Console.ReadKey();
//}
}
static void AddSecurityControll2File(string filePath)
{
////获取文件信息
//FileInfo fileInfo = new FileInfo(filePath);
////获得该文件的访问权限
//System.Security.AccessControl.FileSecurity fileSecurity = fileInfo.GetAccessControl();
////添加ereryone用户组的访问权限规则 完全控制权限
//fileSecurity.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow));
////添加Users用户组的访问权限规则 完全控制权限
//fileSecurity.AddAccessRule(new FileSystemAccessRule("Users", FileSystemRights.FullControl, AccessControlType.Allow));
////设置访问权限
//fileInfo.SetAccessControl(fileSecurity);
//FileInfo fi = new FileInfo(filePath);
//System.Security.AccessControl.FileSecurity fileSecurity = fi.GetAccessControl();
//fileSecurity.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow));
//fileSecurity.AddAccessRule(new FileSystemAccessRule("Users", FileSystemRights.FullControl, AccessControlType.Allow));
//fi.SetAccessControl(fileSecurity);
////给Excel文件所在目录添加"Everyone,Users"用户组的完全控制权限
//DirectoryInfo di = new DirectoryInfo(Path.GetDirectoryName(filePath));
//System.Security.AccessControl.DirectorySecurity dirSecurity = di.GetAccessControl();
//dirSecurity.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow));
//dirSecurity.AddAccessRule(new FileSystemAccessRule("Users", FileSystemRights.FullControl, AccessControlType.Allow));
//di.SetAccessControl(dirSecurity);
}
public static List<string> GetRemovableDeviceID()
{
List<string> deviceIDs = new List<string>();
ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * From Win32_LogicalDisk ");
ManagementObjectCollection queryCollection = query.Get();
foreach (ManagementObject mo in queryCollection)
{
switch (int.Parse(mo["DriveType"].ToString()))
{
case (int)DriveType.Removable: //可以移动磁盘
{
//MessageBox.Show("可以移动磁盘");
//deviceIDs.Add(mo["DeviceID"].ToString());
break;
}
case (int)DriveType.Fixed: //本地磁盘
{
//MessageBox.Show("本地磁盘");
deviceIDs.Add(mo["DeviceID"].ToString());
break;
}
case (int)DriveType.CDRom: //CD rom drives
{
//MessageBox.Show("CD rom drives ");
break;
}
case (int)DriveType.Network: //网络驱动
{
//MessageBox.Show("网络驱动器 ");
break;
}
case (int)DriveType.Ram:
{
//MessageBox.Show("驱动器是一个 RAM 磁盘 ");
break;
}
case (int)DriveType.NoRootDirectory:
{
//MessageBox.Show("驱动器没有根目录 ");
break;
}
default: //defalut to folder
{
//MessageBox.Show("驱动器类型未知 ");
break;
}
}
}
return deviceIDs;
}
}
来源:https://www.cnblogs.com/yuanzhifei/p/8927002.html