רשימת דיסקים עם הרשאת כתיבה
-
אני רוצה לקבל שם של דיסק קשיח או נשלף המחובר למחשב
בעל הרשאות כתיבה ומחיקה ליוזר הנוכחי.הפונקציה הבאה מחזירה רשימה של כל הדיסקים
string[] DriveList = Environment.GetLogicalDrives(); for (int i = 0; i < DriveList.Length; i++) { MessageBox.Show(DriveList[i]); }
איך אפשר לקבל אינפורמציה על כל אחד מהם?
תודה
פורסם במקור בפורום CODE613 ב09/02/2015 19:29 (+02:00)
-
יאהוו אתה שואל שאלה על C#, לא על אקסס, הידד!
אתה צריך להשתמש עם המתודה הזאת DriveInfo.GetDrives, היא עשירה יותר - היא לא מחזירה סתם מערך סטרינג אלא מערך של האובייקט DriveInfo עם שפע מידע על הכונן.
פורסם במקור בפורום CODE613 ב09/02/2015 20:54 (+02:00)
-
@דוד ל.ט.
יאהוו אתה שואל שאלה על C#, לא על אקסס, הידד!
תודה תודה..
@דוד ל.ט.
אתה צריך להשתמש עם המתודה הזאת DriveInfo.GetDrives, היא עשירה יותר - היא לא מחזירה סתם מערך סטרינג אלא מערך של האובייקט DriveInfo עם שפע מידע על הכונן.
אכן יש במתודה שפע של מידע כמו שם, סוג, גודל, מקום וכדו', אבל עדיין אין שם מידע על הרשאות.
פורסם במקור בפורום CODE613 ב09/02/2015 22:42 (+02:00)
-
אכן. חיפשתי בגוגל: C# user has directory write permission
והתוצאות - הדרך הקלאסית זה ללכוד שגיאת הרשאה...
אז הנה הקוד שלכאורה עושה את זה, צריך לבדוק.static void Main(string[] args) { foreach (var drive in DriveInfo.GetDrives()) { Console.WriteLine("{0} : {1}", drive.Name, CheckDriveForWrite(drive)); } Console.ReadLine(); } static DriveType[] drivesToIngorn = new DriveType[] { DriveType.CDRom, DriveType.Network, DriveType.NoRootDirectory }; public static bool CheckDriveForWrite(DriveInfo d) { return (d.IsReady && !drivesToIngorn.Contains(d.DriveType) && HasFolderWritePermission(d.RootDirectory)); } public static bool HasFolderWritePermission(DirectoryInfo destDir) { try { var ds = destDir.GetAccessControl(); return true; } catch (UnauthorizedAccessException) { return false; } }
פורסם במקור בפורום CODE613 ב10/02/2015 12:12 (+02:00)
-
תודה, עובד מצוין, רק שהוא בודק גישה לתיקיית השורש
ואני הייתי צריך לבדוק האם ישנה הרשאה ליצירת קובץ חדש בכונן.static void Main(string[] args) { foreach (var drive in DriveInfo.GetDrives()) { Console.WriteLine("{0} : {1}", drive.Name, CheckDriveForWrite(drive)); } Console.ReadLine(); } static DriveType[] drivesToIngorn = new DriveType[] { DriveType.CDRom, DriveType.Network, DriveType.NoRootDirectory }; public static bool CheckDriveForWrite(DriveInfo d) { return (d.IsReady && !drivesToIngorn.Contains(d.DriveType) && HasFolderWritePermission(d.Name)); } public static bool HasFolderWritePermission(string dn) { try { FileStream fs = File.Create(String.Format("{0}test.jpg", dn)); fs.Close(); File.Delete(String.Format("{0}test.jpg", dn)); return true; } catch (UnauthorizedAccessException) { return false; } }
פורסם במקור בפורום CODE613 ב10/02/2015 16:24 (+02:00)
-
משונה לי מאוד הרשאות כתיבה בתיקייה אמורים לכלול יצירת קבצים חדשים. בכל מקרה אני הייתי נשכב על הכביש ולא עושה כזה דבר: לכתוב קובץ ולמחוק רק בשביל לבדוק? נורא. .
אם אתה שותף לתחושה הרעה שלי ), בדוק אולי את הקוד הזה: http://stackoverflow.com/a/1281638/1271037
פורסם במקור בפורום CODE613 ב10/02/2015 19:01 (+02:00)