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

نام تاپیک: جستجو فایل در درایوها

  1. #1
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443

    Question جستجو فایل در درایوها

    سلام .
    یه نگاه به کد زیر بندازید این کد تمام فایلهای یک درایو رو (با مشخص نمودن یک نوع ) پیدا می کنه اما یه مشکلی داره
     Dim files As ReadOnlyCollection(Of String)
    files = My.Computer.FileSystem.GetFiles("c:\", FileIO.SearchOption.SearchAllSubDirectories, "*.pdf")


    مشکلش اینه که حتی فولدر C:\System Volume Information رو هم میخواد بگرده اما برنامه اجازه دسترسی به این فولدر رو نداره و
    پیغام زیر رو نشون می ده :
    Access to the path 'c:\System Volume Information' is denied
    از این دستورات هم استفاده کردم اما فایده نداشت

    Dim fperm As New FileIOPermission(PermissionState.Unrestricted, "c:\")
    fperm.AllLocalFiles = FileIOPermissionAccess.AllAccess

    راههای دیگه ای هم برای جستجو توی درایوها هست اما فکر نکنم از این ساده تر باشن حتما یه راهی برای رفع این مشکل وجود داره

  2. #2
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443
    نمی دونم از شانس ماست که هر چی میپرسیم کسی جواب نمیده
    حداقل بگید کار با این دستورات چطوریه و به چه درد می خورن :
    Dim fperm As New FileIOPermission(PermissionState.Unrestricted, "c:\")
    fperm.AllLocalFiles = FileIOPermissionAccess.AllAccess

  3. #3
    کاربر دائمی آواتار programmermp
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    Green Territory of North
    پست
    732

    Talking

    نقل قول نوشته شده توسط Sub Zero مشاهده تاپیک
    نمی دونم از شانس ماست که هر چی میپرسیم کسی جواب نمیده
    حداقل بگید کار با این دستورات چطوریه و به چه درد می خورن :
    Dim fperm As New FileIOPermission(PermissionState.Unrestricted, "c:\")
    fperm.AllLocalFiles = FileIOPermissionAccess.AllAccess
    سلام

    ببین از این مثال چیزی دستگیریت می شه یا نه


    Private Function AllFilesDemo() As Boolean Try Console.WriteLine("******************************* *************************" & ControlChars.Lf) Dim fileIOPerm1 As FileIOPermission Console.WriteLine("Creating a FileIOPermission and adding read access for all files") fileIOPerm1 = New FileIOPermission(FileIOPermissionAccess.AllAccess, "C:\Examples\Test\TestFile.txt") fileIOPerm1.AllFiles = FileIOPermissionAccess.Read Console.WriteLine("AllFiles access = " & fileIOPerm1.AllFiles.ToString()) Console.WriteLine("Adding AllAccess rights for local files.") fileIOPerm1.AllLocalFiles = FileIOPermissionAccess.AllAccess Console.WriteLine("AllLocalFiles access = " & fileIOPerm1.AllLocalFiles.ToString()) Catch e As ArgumentException Console.WriteLine(e.ToString()) Return False End Try Return TrueEnd Function 'AllFilesDemo
    به خدا تقصیر من نیست نمی دونم چرا این ادیتوره هر چی توی تگ کدمی زارم این توری پشت سر هم می نویسه ببین اگه مشکل داری تو خوندنش که حتما داری کلمه کلیدی زیررو تو ام اس دی ان سرچ کن توی قسمت ایندکس وارد کنFileIOPermission.AllLocalFiles Propertyهمین مثال اون تو هست

  4. #4
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443
    صالحی جان ممنون از جوابت اما همین یه ذره ای هم که در مورد FileIOPermission بلدم رو از تو msdn در اورده بودم واستفاده کردم منتها نمیدونم چرا این کد هیچ کاری نمی کنه
    با نوشتن این دوخط به برنامه می فهمونم که اجازه دسترسی به همه فایلها رو بده اما باز کار نمیکنه و سر بررسی فولدر System Volume Information ایراد می گیره .

  5. #5
    کاربر دائمی آواتار programmermp
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    Green Territory of North
    پست
    732

    Talking

    نقل قول نوشته شده توسط Sub Zero مشاهده تاپیک
    صالحی جان ممنون از جوابت اما همین یه ذره ای هم که در مورد FileIOPermission بلدم رو از تو msdn در اورده بودم واستفاده کردم منتها نمیدونم چرا این کد هیچ کاری نمی کنه
    با نوشتن این دوخط به برنامه می فهمونم که اجازه دسترسی به همه فایلها رو بده اما باز کار نمیکنه و سر بررسی فولدر System Volume Information ایراد می گیره .

    ببین مصطفی جان

    من هر چی با این کدها ور رفتم دیدم نمی شه یک جوری به ان گفت که اگه به فلان

    دایرکتوری رسیدی ردش کن یعنی اسکن نکن

    فکر کنم باید از طریق دیگری به اسکن فایلها بپردازی یا به عبارت دیگه این روش رو بیخیال شی

    البته این نظر منه شاید راه دیگه ای هم باشه

  6. #6
    سلام
    شما باید روتین های جستجوی فایل ها رو خودتون بنویسید

    در واقع نیاز به چیزی مثل این دارین
    (غلط گیزی به عهده خودتون)

    imports system.io


    sub searchDir(dirname)
    for each d as directory in dirname.getSubDirectories
    searchDir (d.path)
    searchFile (d.path)
    next
    end sub
    sub searchFiles(dirName)
    for each f as fileInfo in dirName.getFiles
    listbox1.items.add f.fullname
    next
    end sib


    و اینم شکل استفاده

    call searchDir("C:\")

  7. #7
    کاربر دائمی آواتار programmermp
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    Green Territory of North
    پست
    732

    Talking

    من که نتونستم مشکلاتش رو برطرف کنم

    کسی تونست برای ما هم بزاره اصلاح شدشو

    با تشکر

  8. #8
    کاربر دائمی آواتار Ner'zhul Arthas
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    پشت کامپیوتر
    پست
    180
    من که جست و جو میکنم درست جواب میده.
    مطمئنید مشکل از اینه؟

  9. #9
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443
    حامد جان گفته بودم روشهای زیادی برای این کار هست
    اینم یه روش دستی که به صورت بازگشتیه اما اخرش باید این فولدر مزاحم چک بشه والا برنامه erorr میده
        obj="c:\"
    exten="*.pdf"
    Sub srch(ByVal obj As Object, ByVal exten As String)
    If IO.Directory.GetDirectories(obj).Length = 0 Then
    For Each f As Object In My.Computer.FileSystem.GetFiles(obj, FileIO.SearchOption.SearchTopLevelOnly, exten)
    lsw.Items.Add(f.ToString)
    Next
    Else

    For Each f As Object In IO.Directory.GetDirectories(obj)
    If f.ToString = obj & "System Volume Information" Then
    Exit For
    End If
    srch(f, exten)
    Next
    End If

    End Sub

    بابا حتما باید یه راهی باشه والا ماکروسافت بیکار نبوده که یه خط کد رو به جای این چند خط کد بالا تو vb گذاشته
    شاید راهش این باشه که اول اون فولدر مزاحم رو از حالت سیستمی در بیاریم بعد کارمون رو انجام بدیم .

  10. #10
    کاربر دائمی آواتار Amir Taghavi
    تاریخ عضویت
    مهر 1384
    محل زندگی
    من از شهر عشقم ولی دلشکسته
    پست
    510
    البته فکر کنم این بهتر باشه!!! :

            For Each drive As String In IO.Directory.GetLogicalDrives

    Try

    For Each directory As String In IO.Directory.GetDirectories(drive)

    Dim dirinfo As New IO.DirectoryInfo(directory)

    If dirinfo.Attributes = 22 Or dirinfo.Attributes = 8211 Then

    Continue For
    End If

    For Each file As String In IO.Directory.GetFiles(dirinfo.FullName, "*.txt", IO.SearchOption.AllDirectories)

    Me.ListBox1.Items.Add(file)
    Me.ListBox1.Refresh()
    Next
    Next
    Catch ex As Exception

    'Do Nothing!
    End Try
    Next


    اگه میشه یه نگاه هم به این بندازین:

    https://barnamenevis.org/showthread.php?t=59956

  11. #11
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443
    امیر جان خودت که بهتر میدونی حلقه های تودر تو اونم از نوع For خوانایی برنامه رو پایین می یاره .
    در ضمن من فقط میخوام یکی بگه چرا این کد کار نمیکنه :

    files = My.Computer.FileSystem.GetFiles("c:\", FileIO.SearchOption.SearchAllSubDirectories, "*.pdf")


    اگه قرار بود خودم روتین جستجو رو بنویسم پس ماکروسافت اینو واسه چی گذاشته

  12. #12
    کاربر دائمی آواتار Amir Taghavi
    تاریخ عضویت
    مهر 1384
    محل زندگی
    من از شهر عشقم ولی دلشکسته
    پست
    510
    اگه قرار بود که سه سوت همه dir ها رو بگردی پس تکلیف permission ها چی میشه؟!!!

  13. #13
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443
    نقل قول نوشته شده توسط amir.taghavizadeh مشاهده تاپیک
    اگه قرار بود که سه سوت همه dir ها رو بگردی پس تکلیف permission ها چی میشه؟!!!
    امیر خان تازه رسیدی به سوالی که توی پست شماره 1 و 2 مطرح کردم تو می تونی دو خط کد بنویسی که برنامه اجازه دسترسی به اون فولدر رو داشته باشه ؟

  14. #14
    کاربر دائمی آواتار Amir Taghavi
    تاریخ عضویت
    مهر 1384
    محل زندگی
    من از شهر عشقم ولی دلشکسته
    پست
    510
    شاید بشه به بعضی Folder ها از طریق کد دسترسی پیدا کرد اما بعیده که OS به تو اجازه دسترسی به System Volume Information رو بده. اسمش روشه و دلیلی وجود نداره User درون این Folder رو ببینه.

  15. #15
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443
    نقل قول نوشته شده توسط amir.taghavizadeh مشاهده تاپیک
    بعیده که OS به تو اجازه دسترسی به System Volume Information رو بده. اسمش روشه و دلیلی وجود نداره User درون این Folder رو ببینه.
    به ما که رسید دلیلی نداره بهش دسترسی داشته باشیم . اگه یه نگاه به نحوه عملکرد انتی ویروسها بندازی می بینی که بیشتر ویروسها رو توی همین فولدر پیدا می کنند . منم همین کار رو می خوام انجام بدم . (البته نه در اون حد ) .
    مطمئنم یه راهی وجود داره .

  16. #16
    نقل قول نوشته شده توسط amir.taghavizadeh مشاهده تاپیک
    البته فکر کنم این بهتر باشه!!! :

            For Each drive As String In IO.Directory.GetLogicalDrives
    Try
    For Each directory As String In IO.Directory.GetDirectories(drive)
    ....
    Next
    Catch ex As Exception
    'Do Nothing!
    End Try
    Next


    اگه میشه یه نگاه هم به این بندازین:

    https://barnamenevis.org/showthread.php?t=59956


    سلام
    به نظر شما با دو حلقه For تو در تو میشه تمام فایل ها و زیر فولدر ها رو بررسی کرد؟
    اگر با الگوریتم پیمایش درخت آشنایی داشتید راحت تر می تونستید این کار رو انجام بدید!
    نگاهی به شبه کدی که نوشتم بیندازید


    بابا حتما باید یه راهی باشه والا ماکروسافت بیکار نبوده که یه خط کد رو به جای این چند خط کد بالا تو vb گذاشته
    اگه قرار بود خودم روتین جستجو رو بنویسم پس ماکروسافت اینو واسه چی گذاشته
    بله، بیکار نبوده! اما دوست عزیز هر خط در برنامه نویسی یا اجرا میشه یا اجرا نمیشه راه سومی نداره که نصفش اجرا بشه و نصفش نه!!!! یعنی اگر این دستور در بررسی یکی از فایل ها یا فولدر ها به مشکل برخورد کنه خطا تولید می کنه! همین! حالا بستگی به برنامه نویسی شما داره که هندلش بکنید یا نه. اما مورد مسلم اینه که نمی تونید پروسه رو Resume کنید!

    فضای نامی My اصولاً برای رفع مشکلات یا تکامل سایر فضا های نامی نوشته نشده! این فضای اسمی (My) به منظور تدارک چند عمل پرکاربرد و ساده نوشته شده! همین! این فضای اسمی چند امکان رو در اختیار شما قرار میده اما اگر قرار باشه به کدتونو حرفه ای تر بکنید یا امکانات دیگه ای بهش اضافه کنید باید خودتون دست به کار بشید

    به ما که رسید دلیلی نداره بهش دسترسی داشته باشیم . اگه یه نگاه به نحوه عملکرد انتی ویروسها بندازی می بینی که بیشتر ویروسها رو توی همین فولدر پیدا می کنند . منم همین کار رو می خوام انجام بدم . (البته نه در اون حد ) .
    مطمئنم یه راهی وجود داره .
    آنتی ویروس شما تا حالا ویروسی رو در مسیر زیر پیدا کرده؟؟
    %WinDrive%\System Volum Information

  17. #17
    کاربر دائمی آواتار Sub Zero
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اهواز
    پست
    443
    آنتی ویروس شما تا حالا ویروسی رو در مسیر زیر پیدا کرده؟؟
    %WinDrive%\System Volum Information
    بله ویروس یا بهتره بگم worm با نام Born.Tak که خودش رو همه جا انتشار میده حتی توی شبکه داخلی . توی این فولدر هم تا دلت بخواد از خودش رد پا می زاره . در ضمن با Kasper Sky هم تونستم از شرش خلاص شم .

  18. #18
    نقل قول نوشته شده توسط Sub Zero مشاهده تاپیک
    بله ویروس یا بهتره بگم worm با نام Born.Tak که خودش رو همه جا انتشار میده حتی توی شبکه داخلی . توی این فولدر هم تا دلت بخواد از خودش رد پا می زاره . در ضمن با Kasper Sky هم تونستم از شرش خلاص شم .
    یک بار دیگه بررسی کن! ببین به فولدری که ویندوز بهت اجازه وارد شدن نمیده ویروس وارد شده؟؟؟ در System Volum Information سایر درایو ها ممکنه ولی در فالدر درایو ویندوز (به دلایل مجوز و امنیتی) ممکن نیست هر کس برای ورود به این فولدر باید مجوز سیستم رو داشه باشه

  19. #19
    کاربر دائمی آواتار programmermp
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    Green Territory of North
    پست
    732

    Talking

    نقل قول نوشته شده توسط BlackDal مشاهده تاپیک
    یک بار دیگه بررسی کن! ببین به فولدری که ویندوز بهت اجازه وارد شدن نمیده ویروس وارد شده؟؟؟ در System Volum Information سایر درایو ها ممکنه ولی در فالدر درایو ویندوز (به دلایل مجوز و امنیتی) ممکن نیست هر کس برای ورود به این فولدر باید مجوز سیستم رو داشه باشه
    خوب شاید اون ویروس که اقا مصطفی می گن

    این مجوز رو داشته

    یا اگه هم نداشته بلد بوده چطوری از این مجوز عبور کنه یا به عبارتی دیگر مجوز رو

    حذف کنه یه همچین چیزهایی ............

    ببینید با iopermision نمی شه یه جوری مجوز رو از روی این فولدر برداشت

    بعد از انجام عملیات دوباره مجوز رو گذاشت؟

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

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