有的电脑 需要安装 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; } }