קבצים ברשת
-
אני רוצה לעשות שיתוף של קבצים ברשת (ווינדוס) ושתהיה לי שליטה (ע"י תוכנה שאבנה) איזה מחשב יכול לגשת לאיזה קבצים. וזה יכול להשתנות כל הזמן.
מכירים איזשהו פרוייקט או תוכנה שתעזור לי? תודה. -
- הרשאות ושוב הרשאות.
- בכניסה למחשב אתה יכול למפות לתיקיית רשת בצורה ממש פשוטה.
אני אישית משתמש ברעיון דומה כדי למפות לכונן X לכל משתמש את התיקייה האישית שלו.
בעבר הביאו כאן גם פיתרון של כונן שנראה ממש כמו כונן לוגי עם הפניית UNC -
@clickone אתה יכול להפנות אותי לפתרון שהובא?
אני שם דגש על זה שאני צריך פתרון שיכול להשתנות כל הזמן. כלומר שתהיה לי שליטה מתוכנה שאני כותב על כל זה. -
@clickone אתה יכול להפנות אותי לפתרון שהובא?
אני שם דגש על זה שאני צריך פתרון שיכול להשתנות כל הזמן. כלומר שתהיה לי שליטה מתוכנה שאני כותב על כל זה.@מנצפך
@dovid נראה לי הפיתרון הזה עדיף. הוא ממש יוצר כונן לוגי ולא רשת.using System; using System.Text; using System.ComponentModel; using System.Runtime.InteropServices; static class Subst { public static void MapDrive(char letter, string path) { if (!DefineDosDevice(0, devName(letter), path)) throw new Win32Exception(); } public static void UnmapDrive(char letter) { if (!DefineDosDevice(2, devName(letter), null)) throw new Win32Exception(); } public static string GetDriveMapping(char letter) { var sb = new StringBuilder(259); if (QueryDosDevice(devName(letter), sb, sb.Capacity) == 0) { // Return empty string if the drive is not mapped int err = Marshal.GetLastWin32Error(); if (err == 2) return ""; throw new Win32Exception(); } return sb.ToString().Substring(4); } private static string devName(char letter) { return new string(char.ToUpper(letter), 1) + ":"; } [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool DefineDosDevice(int flags, string devname, string path); [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern int QueryDosDevice(string devname, StringBuilder buffer, int bufSize); }
בדיקה:
Subst.MapDrive('z', @"c:\temp"); Console.WriteLine(Subst.GetDriveMapping('z')); Subst.UnmapDrive('z');
לא בדקתי (ומעניין לבדוק) אם הוא על כל המחשב או רק על משתמש מסויים.
מקור:
https://stackoverflow.com/questions/3753758/creating-virtual-hard-drive -
@מנצפך
@dovid נראה לי הפיתרון הזה עדיף. הוא ממש יוצר כונן לוגי ולא רשת.using System; using System.Text; using System.ComponentModel; using System.Runtime.InteropServices; static class Subst { public static void MapDrive(char letter, string path) { if (!DefineDosDevice(0, devName(letter), path)) throw new Win32Exception(); } public static void UnmapDrive(char letter) { if (!DefineDosDevice(2, devName(letter), null)) throw new Win32Exception(); } public static string GetDriveMapping(char letter) { var sb = new StringBuilder(259); if (QueryDosDevice(devName(letter), sb, sb.Capacity) == 0) { // Return empty string if the drive is not mapped int err = Marshal.GetLastWin32Error(); if (err == 2) return ""; throw new Win32Exception(); } return sb.ToString().Substring(4); } private static string devName(char letter) { return new string(char.ToUpper(letter), 1) + ":"; } [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool DefineDosDevice(int flags, string devname, string path); [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern int QueryDosDevice(string devname, StringBuilder buffer, int bufSize); }
בדיקה:
Subst.MapDrive('z', @"c:\temp"); Console.WriteLine(Subst.GetDriveMapping('z')); Subst.UnmapDrive('z');
לא בדקתי (ומעניין לבדוק) אם הוא על כל המחשב או רק על משתמש מסויים.
מקור:
https://stackoverflow.com/questions/3753758/creating-virtual-hard-drive -
@מנצפך
@dovid נראה לי הפיתרון הזה עדיף. הוא ממש יוצר כונן לוגי ולא רשת.using System; using System.Text; using System.ComponentModel; using System.Runtime.InteropServices; static class Subst { public static void MapDrive(char letter, string path) { if (!DefineDosDevice(0, devName(letter), path)) throw new Win32Exception(); } public static void UnmapDrive(char letter) { if (!DefineDosDevice(2, devName(letter), null)) throw new Win32Exception(); } public static string GetDriveMapping(char letter) { var sb = new StringBuilder(259); if (QueryDosDevice(devName(letter), sb, sb.Capacity) == 0) { // Return empty string if the drive is not mapped int err = Marshal.GetLastWin32Error(); if (err == 2) return ""; throw new Win32Exception(); } return sb.ToString().Substring(4); } private static string devName(char letter) { return new string(char.ToUpper(letter), 1) + ":"; } [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool DefineDosDevice(int flags, string devname, string path); [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern int QueryDosDevice(string devname, StringBuilder buffer, int bufSize); }
בדיקה:
Subst.MapDrive('z', @"c:\temp"); Console.WriteLine(Subst.GetDriveMapping('z')); Subst.UnmapDrive('z');
לא בדקתי (ומעניין לבדוק) אם הוא על כל המחשב או רק על משתמש מסויים.
מקור:
https://stackoverflow.com/questions/3753758/creating-virtual-hard-drive -
-
@clickone אני רוצה להבין עוד.
איך אני עושה שהמשתמש לא יוכל לגשת למה שלא עשיתי maaping?
בדר"כ אני יודע שבשביל לגשת לקבצים במחשב אחר ברשת, צריך שם וסיסמא של המשתמש במחשב המרוחק. אז איך אני מספק אותם בשביל ליצור כונן רשת?@מנצפך
זה רשת?
אז אולי הפיתרון של דוד יותר נכון.
ואז ממילא אתה משתמש בהרשאות אז הכל בסדר
אתה יכול להשתמש בפיתרון שלי עם נתיב UNCלגבי שם משתמש וסיסמא אני לא יודע
אבל ייתכן ש@מנצפך אמר בקבצים ברשת:
זה קשור כאן לעסק?
https://www.codeproject.com/Articles/43091/Connect-to-a-UNC-Path-with-Credentialsאכן יעזור
-
@מנצפך
זה רשת?
אז אולי הפיתרון של דוד יותר נכון.
ואז ממילא אתה משתמש בהרשאות אז הכל בסדר
אתה יכול להשתמש בפיתרון שלי עם נתיב UNCלגבי שם משתמש וסיסמא אני לא יודע
אבל ייתכן ש@מנצפך אמר בקבצים ברשת:
זה קשור כאן לעסק?
https://www.codeproject.com/Articles/43091/Connect-to-a-UNC-Path-with-Credentialsאכן יעזור
-
@מנצפך
תתחיל עם הפיתרון הזה
בא נראה מה יצא
אל תראה למשתמש את כונן הרשת
רק את הכונן הלוגי
וכמובן- הרשאות!
- הרשאות!!
- הרשאות!!!
-
@מנצפך
תתחיל עם הפיתרון הזה
בא נראה מה יצא
אל תראה למשתמש את כונן הרשת
רק את הכונן הלוגי
וכמובן- הרשאות!
- הרשאות!!
- הרשאות!!!
-
@clickone ניסיתי להוריד הרשאות מהתיקייה שברשת. אבל גם כשאני ממפה כונן המשתמש לא יכול להיכנס. מה עשינו?
-
@clickone אפרט יותר.
יש מחשב ציבורי.
אני רוצה לאפשר לכמה אנשים להשתמש בו, כל אחד יוכל לאחסן את החומר שלו על המחשב ויוכל לגשת רק לקבצים שלו, ע"י הזנת פרטי זיהוי בתוכנה שלי.
אני לא רוצה ליצור לכל אחד חשבון משלו. (כי זה כמה מחשבים).
חשבתי לעשות משהו כזה:
כשמשתמש נכנס לראשונה לתוכנה שלי, אני יוצר לו תיקייה ברשת, וממפה אותה.
לאחר שהוא מסיים את השימוש אני מוחק את המיפוי, ומשנה את ההרשאות של התיקייה כך ששום מחשב ברשת לא יוכל לגשת אליה. עד שהמשתמש נכנס שוב למערכת, ואז אני נותן שוב (למחשב שבו הוא משתמש) הרשאות גישה.
מה אתם אומרים על זה?
והאם אפשר לעשות את זה גם ב FTP? (מיפוי כונן, כך שאפשר לגשת אליו כמו כונן לוגי אחר)?