אין אפשרות למחוק קובץ או תיקייה באמצעי אחסון של מערכת קבצים מסוג NTFS

תרגומי מאמרים תרגומי מאמרים
Article ID: 320081 - View products that this article applies to.
הרחב הכל | כווץ הכל

On This Page

מבוא

מאמר זה מפרט מדוע ייתכן שלא יהיה באפשרותך למחוק קובץ או תיקייה באמצעי אחסון של מערכת קבצים מסוג NTFS וכיצד לטפל בסיבות השונות לבעיה כדי לפתור אותה.

מידע נוסף

שים לב באופן פנימי, NTFS מתייחס לתיקיות כאל סוג מיוחד של קובץ. לכן, המילה "קובץ" במאמר זה מציינת קובץ או תיקייה.

סיבה 1: הקובץ משתמש ב-ACL.

ייתכן שלא יהיה באפשרותך למחוק קובץ אם הקובץ משתמש ברשימת בקרת גישה (ACL). כדי לפתור בעיה זו, שנה את ההרשאות של הקובץ. ייתכן שיהיה עליך להגדיר בעלות על הקבצים על מנת שיתאפשר לך לשנות את ההרשאות.

למנהלי מערכת יש את היכולת המשתמעת להגדיר את בעלותם על כל קובץ, אפילו אם לא הוענקה להם הרשאה מפורשת כלשהי לקובץ זה. למנהלי מערכת יש את היכולת המשתמעת לשנות הרשאות של קובץ, אפילו אם לא הוענקה להם הרשאה מפורשת כלשהי לקובץ זה. לכן, ייתכן שיהיה עליך להגדיר בעלות על קובץ, להעניק לעצמך הרשאות למחיקת הקובץ ולאחר מכן למחוק אותו.

אין באפשרותך להשתמש בכלי אבטחה מסוימים כדי להציג או לשנות הרשאות, כיוון שרשימת ACL של הקובץ אינה קאנונית

כדי לעקוף בעיה זו, השתמש בכלי אחר (לדוגמה, Cacls.exe שנבנה מאוחר יותר).

ערכי בקרת הגישה (ACEs) ברשימת ACL מסודרים לפי סדר מועדף מסוים בהתאם לסוג הערך. לדוגמה, ערכי ACE שמונעים גישה בדרך כלל קודמים לערכי ACE שמעניקים גישה. אולם אין מניעה לכך שתוכנית תכתוב רשימת ACL עם ערכי ACE בסדר אקראי כלשהו. בגירסאות קודמות מסוימות של Windows, התעוררו בעיות בעת הניסיון של Microsoft Windows לקרוא את רשימות ACL ה"לא סטנדרטיות" האלה. לעתים, אין אפשרות לשנות את רשימות ACL אלה כהלכה באמצעות עורך האבטחה הגרפי של Microsoft Windows Explorer. בעיה זו תוקנה בגירסאות מאוחרות יותר של Windows. אם אתה נתקל בבעיה זו, השתמש בגירסה העדכנית ביותר של Cacls.exe. אפילו אם אין באפשרותך להציג או לערוך רשימת ACL קיימת, באפשרותך לכתוב רשימת ACL חדשה שתאפשר לך לגשת לקובץ.

סיבה 2: הקובץ נמצא בשימוש

ייתכן שלא יהיה באפשרותך למחוק קובץ אם הוא נמצא בשימוש. כדי לפתור בעיה זו, ברר איזה תהליך פתח את המזהה הייחודי ולאחר מכן סגור את התהליך הזה.

בהתאם לאופן הפתיחה של הקובץ (לדוגמה, אם הוא נפתח לגישה בלעדית במקום לגישה משותפת), ייתכן שיהיה באפשרותך למחוק קובץ שנמצא בשימוש. באפשרותך להשתמש במגוון כלים שיסייעו לך לברר בכל עת שתרצה אילו תהליכים פתחו מזהים ייחודים של קבצים. לקבלת מידע נוסף על כלים לסיוע לתהליכים בעלי מזהים ייחודיים פתוחים של קבצים, לחץ על מספרי המאמרים שלהלן כדי להציגם מתוך מאגר הידע Microsoft Knowledge Base:
242131 כיצד להציג רשימה של תהליכים המשתמשים בקבצים (ייתכן שקישור זה מפנה לתוכן שחלק ממנו או כולו מופיע באנגלית)
172710 כיצד להשתמש בכלי OH ב-Windows NT 4.0 Resource Kit (ייתכן שקישור זה מפנה לתוכן שחלק ממנו או כולו מופיע באנגלית)
ייתכנו מאפיינים שונים לבעיה זו. ייתכן שיהיה באפשרותך להשתמש בפקודה Delete כדי למחוק קובץ, אבל הקובץ לא יימחק בפועל עד אשר התהליך שמשתמש בקובץ ישחרר אותו. בנוסף, ייתכן שלא יהיה באפשרותך לגשת לתיבת הדו-שיח אבטחה עבור קובץ שעומד להימחק. כדי לפתור בעיה זו, ברר איזה תהליך משתמש במזהה הייחודי הפתוח ולאחר מכן סגור את התהליך הזה.

סיבה 3: פגם במערכת הקבצים מונע גישה לקובץ

ייתכן שלא יהיה באפשרותך למחוק את הקובץ אם מערכת הקבצים פגומה. כדי לפתור בעיה זו, הפעל את כלי השירות Chkdsk באמצעי האחסון של הדיסק כדי לתקן שגיאות אם יש כאלה.

סקטור פגום בדיסק, חומרה פגומה אחרת, או באגים בתוכנה יכולים לפגוע במערכת הקבצים ולגרום למצב בעייתי של הקבצים. פעולות אופייניות עלולות להיכשל במגוון דרכים. כאשר מערכת הקבצים מגלה פגם, היא רושמת אירוע ביומן האירועים ובדרך כלל מתקבלת הודעה בה אתה מתבקש להפעיל את Chkdsk. בהתאם לסוג הפגם, Chkdsk יצליח או לא יצליח לשחזר את נתוני הקבצים. אולם Chkdsk מחזיר את מערכת הקבצים למצב עקבי מבחינה פנימית. לקבלת מידע נוסף על השימוש בכלי השירות Chkdsk, לחץ על מספרי המאמרים שלהלן כדי להציגם מתוך מאגר הידע Microsoft Knowledge Base:
176646 הודעת שגיאה: The file or directory is corrupt...? (??הקובץ או הספריה פגומים...) (ייתכן שקישור זה מפנה לתוכן שחלק ממנו או כולו מופיע באנגלית).
187941 הסבר על Chkdsk והמתגים החדשים ?/C ו-?/I (ייתכן שקישור זה מפנה לתוכן שחלק ממנו או כולו מופיע באנגלית)

סיבה 4: קיימים קבצים בנתיבים עמוקים יותר מאשר תווי MAX_PATH

ייתכן שלא יהיה באפשרותך לפתוח קובץ, לערוך, או למחוק אותו, אם קיימות בעיות בנתיב הקובץ.

פתרון 1: השתמש בשם 8.3 שנוצר באופן אוטומטי כדי לגשת לקובץ

כדי לפתור בעיה זו, ייתכן שתרצה להשתמש בשם 8.3 שנוצר באופן אוטומטי כדי לגשת לקובץ. פתרון זה עשוי להיות הפתרון הקל ביותר אם הנתיב עמוק כיוון ששמות הקבצים ארוכים מדי. אם גם נתיב 8.3 ארוך מדי או אם השמות של 8.3 לא זמינים באמצעי האחסון, עבור לפתרון 2. לקבלת פרטים נוספים על הפיכת שמות קבצים של 8.3 ללא-זמינים באמצעי אחסון מסוג NTFS, לחץ על מספר המאמר שלהלן כדי להציגו מתוך מאגר הידע Microsoft Knowledge Base:
121007 כיצד להפוך את יצירת השמות ב-8.3 ללא זמינה במחיצות NTFS (ייתכן שקישור זה מפנה לתוכן שחלק ממנו או כולו מופיע באנגלית)

פתרון 2: שנה את שמה של תיקייה עמוקה או העבר אותה

שנה את שמה של התיקייה כדי שקבצי היעד שנמצאים עמוק יותר מאשר MAX_PATH לא יהיו קיימים עוד. אם תחליט לעשות זאת, התחל בתיקיית הבסיס (או בכל מקום נוח אחר) ולאחר מכן שנה את שמות התיקיות לשמות קצרים יותר. אם פעולה זו לא פותרת את הבעיה (לדוגמה, אם קובץ עמוק יותר מ-128 תיקיות), עבור לפתרון 4.

פתרון 3: מפה כונן לתיקייה במבנה של הנתיב

מפה כונן לתיקייה בתוך מבנה הנתיב של קובץ היעד או תיקיית היעד. שיטה זו מקצרת את הנתיב הווירטואלי.

לדוגמה, נניח שהנתיב בנוי כדלקמן: ?
?\\ServerName\SubfolderName1\SubfolderName2\SubfolderName3\SubfolderName4\...?
? בנתיב זה, סך כל התווים עולה על 255 תווים. כדי לקצר את הנתיב ל-73 תווים, מפה כונן ל-SubfolderName4.

פתרון 4: השתמש בשיתוף רשת שעומקו זהה לזה של התיקייה

אם הפתרונות 1, 2 ו-3 לא נוחים או שאינם פותרים את הבעיה, צור שיתוף רשת עמוק ככל האפשר בעץ התיקיות ולאחר מכן שנה את שמות התיקיות באמצעות גישה לשיתוף.

פתרון 5: השתמש בכלי שבאפשרותו לעבור נתיבים עמוקים

תוכניות רבות של Windows מצפות לאורך נתיב מרבי קצר מ-255 תווים. לכן, תוכניות אלה מקצות שטח אחסון שמספיק רק לטיפול בנתיבים אופייניים אלה. ב-NTFS לא קיימת מגבלה כזה ובאפשרותו להכיל נתיבים ארוכים בהרבה.

אתה עלול להיתקל בבעיה זו אם תיצור שיתוף בנקודה מסוימת במבנה התיקיות שהיא כבר עמוקה למדי ולאחר מכן תיצור מבנה עמוק מתחת לנקודה זו באמצעות השיתוף. לכלים מסוימים שפועלים באופן מקומי בעץ התיקיות אין אפשרות לעבור את העץ כולו החל מהבסיס. ייתכן שיהיה עליך להשתמש בכלים אלה בדרך מיוחדת על מנת לאפשר להם לעבור את השיתוף. (בתיעוד של ה-API של CreateFile מתוארת שיטה לעבור את העץ כולו במצב זה).

בדרך כלל ניתן לנהל קבצים באמצעות התוכנה שיוצרת אותם. אם ברשותך תוכנית שבאפשרותה ליצור קבצים עמוקים יותר מאשר MAX_PATH, בדרך כלל באפשרותך להשתמש בתוכנית זו כדי למחוק או לנהל את הקבצים. בדרך כלל באפשרותך למחוק קבצים שנוצרו בשיתוף באמצעות אותו שיתוף.

סיבה 5: שם הקובץ כולל שם שמור במרחב השמות של Win32

אם שם הקובץ כולל שם שמור במרחב השמות של Win32 (לדוגמה, "lpt1"), ייתכן שלא יהיה באפשרותך למחוק את הקובץ. כדי לפתור בעיה זו, השתמש בתוכנית שונה מ-Win32 כדי לשנות את שם הקובץ. באפשרותך להשתמש בכלי POSIX או בכל כלי אחר שמשתמש בתחביר הפנימי המתאים כדי להשתמש בקובץ.

בנוסף, ייתכן שיהיה באפשרותך להשתמש בפקודות מוכללות מסוימות כדי לעקוף את הבדיקות האופייניות בנוגע לשמות שמורים ב-Win32, אם תשתמש בתחביר מסוים כדי לציין את נתיב הקובץ. לדוגמה, אם תשתמש בפקודה Del ב-Windows XP, באפשרותך למחוק קובץ ששמו "lpt1" אם תציין את הנתיב המלא של הקובץ באמצעות התחביר המיוחד שלהלן:
del \\?\c:\path_to_file\lpt1
לקבלת מידע נוסף על הדרך למחוק קבצים בעלי שמות שמורים תחת Windows NT ו-Windows 2000, לחץ על מספר המאמר שלהלן כדי להציגו מתוך מאגר הידע Microsoft Knowledge Base:
120716 כיצד להסיר קבצים בעלי שמות שמורים ב-Windows (ייתכן שקישור זה מפנה לתוכן שחלק ממנו או כולו מופיע באנגלית)
לקבלת מידע נוסף על הדרך למחוק קבצים בעלי שמות שמורים תחת Windows XP, לחץ על מספר המאמר שלהלן כדי להציגו מתוך מאגר הידע Microsoft Knowledge Base:
315226 כיצד להסיר קבצים בעלי שמות שמורים ב-Windows XP (ייתכן שקישור זה מפנה לתוכן שחלק ממנו או כולו מופיע באנגלית)
אם פותחים מזהה ייחודי לקובץ באמצעות מנגנון CreateFile אופייני של Win32, יישמרו שמות קבצים מסוימים עבור התקני DOS מהסגנון הישן. עבור תאימות לאחור, שמות הקבצים האלה אסורים ואין אפשרות ליצור אותם באמצעות שימוש בקריאות קובץ אופייניות ב-Win32. אולם בעיה זו היא לא מגבלה של NTFS.

ייתכן שיהיה באפשרותך להשתמש בתוכנית של Win32 כדי לעקוף את בדיקות השם האופייניות שמתבצעות בעת יצירה (או מחיקה) של קובץ, באמצעות טכניקה זהה לזו שמשתמשים בה כדי לעבור תיקיות עמוקות יותר מ-MAX_PATH. בנוסף, בדיקות אלה לא חלות על כלי POSIX מסוימים.

סיבה 6: שם הקובץ כולל שם לא חוקי במרחב השמות של Win32

ייתכן שלא יהיה באפשרותך למחוק קובץ, אם שם הקובץ כולל שם לא חוקי (לדוגמה, שם הקובץ מכיל רווח נגרר או נקודה נגררת או ששם הקובץ מורכב מרווח בלבד). כדי לפתור בעיה זו, מחק את הקובץ בעזרת כלי שמשתמש בתחביר הפנימי המתאים. בכלים מסוימים באפשרותך להשתמש בתחביר "\\?\" כדי לפעול על קבצים אלה, לדוגמה:
del "\\?\c:\path_to_file_that contains a trailing space.txt "?
הסיבה לבעיה זו דומה לסיבה 4. אולם אם תשתמש בתחביר Win32 אופייני כדי לפתוח קובץ ששמו מכיל רווחים נגררים או נקודות נגררות, יוסרו הרווחים הנגררים או הנקודות הנגררות לפני הפתיחה של הקובץ עצמו. לכן, אם באותה תיקייה יש שני קבצים ששמם "AFile.txt" ו-"AFile.txt " (שים לב לרווח אחרי שם הקובץ), אם תנסה לפתוח את הקובץ השני באמצעות קריאות Win32 רגילות, ייפתח הקובץ הראשון במקום זאת. בדומה לכך, אם ישנו קובץ ששמו " " (תו רווח) בלבד ותנסה לפתוח אותו באמצעות קריאות Win32 רגילות, תיפתח תיקיית האב של הקובץ במקום זאת. במצב זה, אם תנסה לשנות את הגדרות האבטחה של קבצים אלה, לא יהיה באפשרותך לעשות זאת או שתגרום לשינוי בלתי צפוי בהגדרות של קבצים אחרים. אם מתעוררת בעיה כזו, ייתכן שתחשוב בטעות שיש לך הרשאה לקובץ, כאשר למעשה לקובץ יש רשימת ACL מגבילה.

שילובי סיבות

לעתים, אתה עלול להיתקל בשילובים של סיבות אלה, מה שעלול להפוך את הליך מחיקת הקובץ למורכב יותר. לדוגמה, אם תתחבר כמנהל מערכת, ייתכן שתיתקל בשילוב של סיבה 1 (אין לך הרשאות למחוק קובץ) וסיבה 5 (שם הקובץ מכיל תו נגרר שגורם לניתוב מחדש של הגישה לקובץ אל קובץ אחר או אל קובץ שלא קיים) וייתכן שלא יהיה באפשרותך למחוק את הקובץ. אם תנסה לפתור בעיה שנוצרה עקב סיבה 1 באמצעות הגדרת בעלות על הקובץ והוספת הרשאות, ייתכן שלמרות זאת לא יהיה באפשרותך למחוק את הקובץ כיוון שאין באפשרותו של עורך ה-ACL בממשק המשתמש לגשת לקובץ המתאים עקב סיבה 6.

במצב זה, באפשרותך להשתמש בכלי השירות Subinacl עם המתג ?/onlyfile? (כלי שירות זה כלול בערכת המשאבים - Resource Kit) כדי לשנות את הבעלות וההרשאות של קובץ שלא ניתן לגשת אליו בדרך אחרת, לדוגמה:
subinacl /onlyfile "\\?\c:\path_to_problem_file" /setowner=domain\administrator /grant=domain\administrator=F
שים לב פקודה זו היא שורת פקודה יחידה שפוצלה לשורות לשם נוחות הקריאה.

דוגמה זו של שורת הפקודה משנה את הקובץ C:\path_to_problem_file (נתיב לקובץ הבעייתי) שמכיל רווח נגרר, כך שחשבון מנהל\התחום הוא הבעלים של הקובץ ולחשבון זה שליטה מלאה על הקובץ. כעת באפשרותך למחוק קובץ זה באמצעות הפקודה Del עם אותו תחביר "\??\\".

מידע נוסף

לקבלת מידע נוסף, לחץ על מספר המאמר שלהלן כדי להציגו מתוך מאגר הידע Microsoft Knowledge Base:
319368 בעת מחיקת תיקיות מכונן נטען, מתקבלת הודעת השגיאה "הגישה נדחתה" (ייתכן שקישור זה מפנה לתוכן שחלק ממנו או כולו מופיע באנגלית)

מאפיינים

Article ID: 320081 - Last Review: יום שני 03 דצמבר 2007 - Revision: 7.3
המידע במאמר זה חל על:
  • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
  • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Web Edition
  • Microsoft Windows Small Business Server 2003 Premium Edition
  • Microsoft Windows Small Business Server 2003 Standard Edition
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows Advanced Server, Limited Edition
  • Microsoft Windows Datacenter Server Limited Edition
מילות מפתח 
kbinfo kbfilesystems KB320081

ספק משוב

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com