نمایش نتایج 1 تا 3 از 3

نام تاپیک: Folder Access Denied هنگام حذف دایرکتوری

  1. #1
    کاربر دائمی آواتار پرستو پارسایی
    تاریخ عضویت
    آبان 1392
    محل زندگی
    تهران
    پست
    458

    Folder Access Denied هنگام حذف دایرکتوری

    با سلام من در شاخه ویندوز در درایو سی یک دایرکتوری ایجاد و در آن یک فایل رو اکسترکت میکنم ولی تلاشم برای حذف دایرکتوری ایجاد شده نتیجه نداد . از چندین روش متفاوت استفاده کردم ولی نتیجه مطلوب نگرفتم لازم به توضیح اینکه پروژه رو روی ادمین تنظیم کردم و حتی اگر ریست هم کنم مشکل حل نمیشه .این مورد برای ویندوز 7 به بالا مورد نیازم هست ممنون میشم اساتید در صورت اطلاع پاسخ دهید

     Dim path As String = "C:\Windows" 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Directory.GetDirectories(path, "New", SearchOption.AllDirectories).
    ToList().ForEach(Sub(x) Directory.Delete(x, True))
    End Sub


    Or

      Try  Dim path As String = "C:\Windows"
    Dim directory As New DirectoryInfo(path)
    directory.Delete(True)
    Catch


    End Try

  2. #2

    نقل قول: Folder Access Denied هنگام حذف دایرکتوری

    نقل قول نوشته شده توسط پرستو پارسایی مشاهده تاپیک
    با سلام من در شاخه ویندوز در درایو سی یک دایرکتوری ایجاد و در آن یک فایل رو اکسترکت میکنم ولی تلاشم برای حذف دایرکتوری ایجاد شده نتیجه نداد . از چندین روش متفاوت استفاده کردم ولی نتیجه مطلوب نگرفتم لازم به توضیح اینکه پروژه رو روی ادمین تنظیم کردم و حتی اگر ریست هم کنم مشکل حل نمیشه .این مورد برای ویندوز 7 به بالا مورد نیازم هست ممنون میشم اساتید در صورت اطلاع پاسخ دهید

     Dim path As String = "C:\Windows" 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Directory.GetDirectories(path, "New", SearchOption.AllDirectories).
    ToList().ForEach(Sub(x) Directory.Delete(x, True))
    End Sub


    Or

      Try  Dim path As String = "C:\Windows"
    Dim directory As New DirectoryInfo(path)
    directory.Delete(True)
    Catch


    End Try
    از جهت دسترسی به پوشه ای که خود برنامه تون ساخته اساسا مشکلی نیست، چون خود کاربری که برنامه تون با حساب کاربری اش اجرا میشه، صاحب و Owner اون پوشه محسوب خواهد شد و برای حذف کردنش طبعا دسترسی کافی داره.
    اما چند تا مورد مهم هست.

    اول اینکه مهمه جستجوی پوشه ها رو از کدوم مسیر یا با چه SearchOption ای شروع کنید.
    وقتی می نویسید هر چی فولدر New در C:\Windows و زیر پوشه ها اش هست پیدا کن، دارید پوشه هایی نظیر
    C:\Windows\Help\New و C:\Windows\System32\New و C:\Windows\Prefetch\ReadyBoot\New و ... رو بدست می آورید.
    نه اینکه این پوشه ها روی هر ویندوزی وجود داشنه باشند یا پوشه های سیستمی حساسی باشند، نه، اما اگر روی ویندوزی پیدا شدند، برنامه شما سازنده شون نبوده.
    پوشه هایی که شما نساخته اید رو که قاعدتا نمی خواهید حذف کنید.

    ثانیا سیستم ممکنه به برنامه شما اجازه نده که همه زیر پوشه های C:\Windows رو پیمایش کنید، خیلی طبیعیه که دسترسی بعضی پوشه ها این اجازه رو نداره.
    پس بهتره جستجو رو تا حدی که امکانش هست به پوشه های خودتون محدود کرده باشید.
    توجه داشته باشید که PathIO صرفا یک اسم مستعار من در آوردی برای System.IO.Path ئه که خودم در ابتدای کد تعریف می کنم.
    چون شما هم فیلدی به نام path دارید و با هم قاطی خواهند شد، نام مستعار برای System.IO.Path تعریف کردم تا کامپایلر دچار ابهام نشه.


    Imports System.IO
    Imports PathIO = System.IO.Path

    Public Class Form1
    Dim path As String = "C:\Windows"

    Private Sub Button1_Click (sender As Object, e As EventArgs) Handles Button1.Click
    Dim newPath = PathIO.Combine (path, "New")
    If Directory.Exists (newPath) Then
    ListBox1.Items.AddRange (Directory.GetDirectories (newPath, "*", SearchOption.AllDirectories))
    End If
    End Sub

    Private Sub Button2_Click (sender As Object, e As EventArgs) Handles Button2.Click
    Dim newPath = PathIO.Combine (path, "New")
    Directory.CreateDirectory (PathIO.Combine (newPath, "Folder1\Test"))
    Directory.CreateDirectory (PathIO.Combine (newPath, "Folder2"))
    File.WriteAllText (PathIO.Combine (newPath, "Folder1\test.txt"), "1234")
    End Sub

    Private Sub Button3_Click (sender As Object, e As EventArgs) Handles Button3.Click
    Dim newPath = PathIO.Combine (path, "New")
    If Directory.Exists (newPath) Then
    Directory.Delete (newPath, True)
    End If
    End Sub
    End Class


    ثالثا اگر فایلی به هر دلیلی در پوشه یا زیر پوشه هایی که قصد پاک کردن شون رو دارید باز باشه، اون فایل و مسیر پوشه قابل حذف کردن نیست.
    مثلا من تصویر image.jpg رو در پوشه New شما ذخیره می کنم و در pictureBox1 نمایش می دهم :

    Private Sub Button4_Click (sender As Object, e As EventArgs) Handles Button4.Click
    Dim newPath = PathIO.Combine (path, "New")
    Dim imagePath = PathIO.Combine (newPath, "image.jpg")
    Directory.CreateDirectory (newPath)
    SystemIcons.Information.ToBitmap ().Save (imagePath, Imaging.ImageFormat.Jpeg)
    PictureBox1.Image = Image.FromFile (imagePath)
    End Sub


    دیگه سیستم به من اجازه نمیده این فایل تصویری در حال نمایش یا پوشه New رو حذف کنم، خطای عدم دسترسی خواهد داد :

    Private Sub Button5_Click (sender As Object, e As EventArgs) Handles Button5.Click
    Dim newPath = PathIO.Combine (path, "New")
    Dim imagePath = PathIO.Combine (newPath, "image.jpg")
    File.Delete (imagePath)
    Directory.Delete (newPath, True)
    End Sub


    مگر اینکه قبلش اون فایل تصویری رو ببندم تا فایل و پوشه اش از Lock سیستم فایل در بیاد و Unlock بشه :

    Private Sub Button5_Click (sender As Object, e As EventArgs) Handles Button5.Click
    Dim newPath = PathIO.Combine (path, "New")
    Dim imagePath = PathIO.Combine (newPath, "image.jpg")
    If PictureBox1.Image IsNot Nothing Then
    PictureBox1.Image.Dispose ()
    PictureBox1.Image = Nothing
    End If
    File.Delete (imagePath)
    Directory.Delete (newPath, True)
    End Sub

    پس موقع حذف پوشه New به اینکه در اون مسیر و زیر شاخه هاش چه فایل هایی ممکنه باز مونده باشند توجه داشته باشید.
    اگر کاری در اون پوشه انجام داده اید که منجر به باز شدن فایل یا فایل هایی شده (مثلا فایل pdf رو در PDF Reader باز کرده اید)، قبل از حذف شون باید به فکر راهی برای بستن فایل ها یا برنامه مرتبط باشید.

  3. #3
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    ایران
    پست
    372

    نقل قول: Folder Access Denied هنگام حذف دایرکتوری

    سلام

    این کد شما اصلا به مرحله حذف فولدر نمیرسه

    در همان قسمت جستجوی فولدر به مشکل عدم دسترسی میخوره و اصلا نمیتواند لیست فولدرهای مورد نظر شما را پیدا کند

    شما بهتره در یک مسیر دیگر فایلهای مورد نظرتان را اکسترکت نمایید.

تاپیک های مشابه

  1. مشکل Access is denied در شبکه کردن 7 و XP
    نوشته شده توسط HjSoft در بخش شبکه و Networking‌
    پاسخ: 17
    آخرین پست: یک شنبه 08 شهریور 1394, 08:33 صبح
  2. خطای access denied
    نوشته شده توسط sunboymn در بخش PHP
    پاسخ: 3
    آخرین پست: یک شنبه 11 آبان 1393, 18:48 عصر
  3. خطای Access is Denied
    نوشته شده توسط armin8651 در بخش VB.NET
    پاسخ: 12
    آخرین پست: جمعه 25 بهمن 1392, 09:15 صبح
  4. سوال: Access to the path is denied در آپلود فایل در زیر دایرکتوری
    نوشته شده توسط Muhammad-Ali در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: دوشنبه 28 تیر 1389, 07:28 صبح
  5. Access is denied
    نوشته شده توسط naghmehgl در بخش طراحی وب (Web Design)
    پاسخ: 1
    آخرین پست: دوشنبه 03 بهمن 1384, 00:02 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •