Vba ẩn file trong foder?

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Xin chào GPE!
Em có 1 foder file (đính kèm)
Và trong file tổng hợp E tạo 2 nút ẩn file và hiện file!
Nghĩa là ẩn toàn bộ các file trong forder đó và hiện toàn bộ các file trong forder.
Trừ file tổng hợp! File này luôn hiện!
Xin hỏi GPE có code nào thực hiện được vấn đề này không ạ?
Tks!

Gửi bạn file dùng để Set Attribute cho file và folder
Bạn theo code trong file mà phát triển riêng cho mình nhé

Em xem cũng chẳng hiểu gì cả…@@! Cứ như Ma trận ý!
Thầy có thể thực hiện trên file Tổng hợp của anh GàKon đưa lên được không ạ?
Em thấy bài này cũng tiện cho khi mà 1 foder chứa quá nhiều file mà mình khi mình cần tìm nhanh 1 file tổng hợp đó mở foder ra là có thể thấy ngay. Nếu cần thiết thì có thể cho nó hiện lên.
Việc ẩn các file con cũng hay nhằm tránh việc thay đổi dữ liệu liên quan đến file tổng hợp!
Tks!

Cái này là "dấu cho khuất mắt" chứ có phải "dấu không moi được" đâu.
Bạn vào Tools (mở forder lên) –> Folder options –> thẻ View –> chọn show hide files
Code thay đổi attribus để thành hide + system (nhìn tên tập tin Excel thì biết). Ở đường dẫn trên thì nó nằm liền với show hide files, tên là Not show hide files (đại loại thế vì tôi không có IE tiếng Anh nên không rõ tên thế nào)

Gì chứ
Bạn cứ mở file ChangeFolderAttiribule.xlsm lên, duyệt đến thư mục cần thay đổi Attribute, rồi bấm Apply là được rồi
Trên form ấy, tôi để mặc định dấu check tại Archive. Vậy bạn không cần check gì cả, chỉ Apply là mọi file, folder sẽ trở lại như trước thôi
Code trên là viết tổng quát, giờ viết riêng cho bài này thì.. quá dễ chứ sao nữa
1> Code trong module

Private Declare Sub SHChangeNotify Lib "shell32.dll" _
(ByVal wEventId As Long, ByVal uFlags As Long, dwItem1 As Any, dwItem2 As Any)
Sub ShowHideFiles(ByVal Hidden As Boolean)
Dim fleItem As Object, lAtt As Long
Dim sFilePath As String, sFolder As String
sFilePath = ThisWorkbook.FullName
sFolder = ThisWorkbook.Path
On Error Resume Next
lAtt = IIf(Hidden, vbHidden + vbSystem, vbNormal)
With CreateObject("Scripting.FileSystemObject")
For Each fleItem In .GetFolder(sFolder).Files
If fleItem.Path <> sFilePath Then
fleItem.Attributes = lAtt
End If
Next
End With
SHChangeNotify &H8000000, &H0&, 0, 0
End Sub

Lưu ý SHChangeNotify để Refresh (không có cũng được nhưng có nó thì "nhìn" sẽ "sướng" hơn)
2> Code trong sheet1

Private Sub cmd_Click()
With cmd
ShowHideFiles (cmd.Caption = "Hide Files")
.Caption = IIf(.Caption = "Show Files", "Hide Files", "Show Files")
End With
End Sub

Lưu ý: CommandButton tôi đặt tên là cmd nhé

Rất tuyệt vời Thầy ạ!
có thể ẩn hết các file trừ file tổng hợp và foder!
Thầy có thẻ chỉ cho em hay sửa lại code (đơn giản lại từng bước) để em dẽ hình dung và áp dụng hơn không ạ?
Ví dụ Em muốn hiện thêm 1 file nào đó cùng với file tổng hợp có được không ạ? File đó tên là "data.xls" chẳng hạn.
Tks Thầy!

Tôi cũng chưa test, nhưng với code đó, bạn thử thêm vào chỗ này xem:

Sub ShowHideFiles(ByVal Hidden As Boolean)
    Dim fleItem As Object, lAtt As Long
    Dim sFilePath As String, sFolder As String
    [B][COLOR=#ff0000]Dim sDataFilePath As String[/COLOR][/B]

sFilePath = ThisWorkbook.FullName
    sFolder = ThisWorkbook.Path
   [B][COLOR=#ff0000] sDataFilePath = sFolder & "data.xls"[/COLOR][/B]

On Error Resume Next
    lAtt = IIf(Hidden, vbHidden + vbSystem, vbNormal)
    With CreateObject("Scripting.FileSystemObject")
        For Each fleItem In .GetFolder(sFolder).Files
            If fleItem.Path <> sFilePath [B][COLOR=#ff0000]Or fleItem.Path <> sDataFilePath [/COLOR][/B]Then
                fleItem.Attributes = lAtt
            End If
        Next
    End With
    SHChangeNotify &H8000000, &H0&, 0, 0
End Sub

Cái chổ Or màu xanh ấy lý ra phải là And mới đúng chứ nhỉ
Ngoài ra phải lưu ý rằng
sDataFilePath = sFolder & "data.xls"
khác với
sDataFilePath = sFolder & "Data.xls"
và cũng khác với
sDataFilePath = sFolder & "DATA.xls"

Ồh! Vấn đề hiện thêm file Em đã hiểu rồi!
Nhưng ý Em nói Thầy có thể tách code trên ra làm 2 được không?
Code nào là ẩn code là hiện.(để em nhìn nhận dễ hơn).Kiểu như là bài của Anh GàKon đưa ra 2 nút và Thầy ndu đã gộp vào 1 nút!
Đúng là rất ngắn gọn. Nhưng với nhưng code cao cấp kiểu này… Em không thể nào mà lĩnh hội được.-+*/

Thì chổ này nè:
fleItem.Attributes = lAtt
Mà ta có:
vbNormal = 0 <==> Bình thường
vbReadOnly = 1 <==> Chỉ đọc
vbHidden = 2 <===> Ẩn
vbSystem =4 <===> Hệ thống
vbArchive =32
<===> Lưu trử
Vậy muốn ẩn hiện thế nào thì cứ gán vào biến lAtt là xong!
Ví dụ:
– Set thuộc tính ẩn + system, ta dùng:

lAtt = [COLOR=#0000cd][I]vbHidden[/I][/COLOR] + [I][COLOR=#0000cd]vbSystem[/COLOR][/I]
fleItem.Attributes = lAtt

– Set thuộc tính ReadOnly cho file:

lAtt = [COLOR=#0000cd][I]vbReadOnly[/I][/COLOR]
fleItem.Attributes = lAtt

– Cho file trở lại bình thường

lAtt = [COLOR=#0000cd][I]vbNormal[/I][/COLOR]
fleItem.Attributes = lAtt

vân vân
———–
Bạn để ý phía trên tôi viết thế này:
lAtt = IIf(Hidden, vbHidden + vbSystem, vbNormal)
Tức nếu biến Hidden =TRUE thì biến lAtt sẽ = vbHidden + vbSystem, ngược lại thì lAtt sẽ = vbNormal
Nói chung: ẩn hay hiện sẽ tùy thuộc vào việc ta truyền vào biến Hidden này là TRUE hay FALSE
Cách viết code như trên là thuộc dạng Sub có tham số truyền (cũng như viết Function)
Bay giờ, từ Sub tổng quát trên, ta viết code cho CommandButton để nó vừa có tác dụng ẩn, vừa có tác dụng hiện là chổ này đây:

Private Sub cmd_Click()
With cmd
ShowHideFiles (cmd.Caption = "Hide Files")
.Caption = IIf(.Caption = "Show Files", "Hide Files", "Show Files")
End With
End Sub
Cái này là dựa vào Caption của cmd để truyền TRUE, FALSE cho biến Hidden —> là chổ này ShowHideFiles (cmd.Caption = "Hide Files")
Nghĩa là:
– Nếu cmd.Caption = "Hide Files" là ĐÚNG thì dòng lệnh sẽ tương đương ShowHideFiles TRUE —> Ẩn file
– Nếu cmd.Caption = "Hide Files" là SAI thì dòng lệnh sẽ tương đương ShowHideFiles FALSE —> Hiện file
————————
Nếu tách thành 2 Sub riêng thì càng dễ
ẨN:

Private Sub An_Click()
ShowHideFiles TRUE
End Sub
và HIỆN:

Private Sub HIEN_Click()
ShowHideFiles FALSE
End Sub
Vậy thôi

www.giaiphapexcel.com/diendan/threads/vba-%E1%BA%A9n-file-trong-foder.72828/

Học Nhân sự Tổng hợp – Trở thành chiến binh nhân sự vững nghiệp vụ
Khóa học SprinGO phù hợp

Học Nhân sự Tổng hợp – Trở thành chiến binh nhân sự vững nghiệp vụ

Con người là một trong những yếu tố quan trọng của công ty, là tài sản quý giá của doanh nghiệp. Chính vì thế,...

Xem khóa học
★★★★★ 5 ★ 1 👤 1 ▥ 0
Quảng cáo

Bạn nên đọc

One Response

  1. hands says:

    Hấp dẫn đấy!
    Vậy thì muốn cho ản cả các foder nằm tròng foder có file tổng hợp này thì thêm dòng lệnh nào nữa hả các Bác!

    Vậy thì tội vạ gì viết code nữa! Cứ tải cái file ở bài #4 này về và sử dụng thôi:

    https://www.giaiphapexcel.com/forum/showthread.php?72828-Vba-%E1%BA%A9n-file-trong-foder&p=445516#post445516

    Muốn ẩn file, folder gì cũng chơi ráo trội hết!

    Ẩn để khó mà "lôi" ra thì hơi khó chứ ẩn để cho khuất mắt nhưng bất kỳ ai muốn cũng có thể dễ dàng "lôi" ra thì chả cần code gì cả.
    Cứ Tools –> folder options –> thẻ View –> not show hide files (tên đại loại thế)
    Sau đó muốn ẩn thư mục hoặc tập tin A: chuột phải lên A –> properties –> đánh dấu "hide"

    Vậy nhờ Anh chia sẽ cho mọi người biết cách nào để cho cái folder/file là "khó lôi" ra đi ạ.

    Trân trọng cám ơn Anh.

    Thử "quái chiêu" này xem
    Bạn tại file Tuan.rar về, giải nén rồi mở file TongHop.xls lên
    Xong, bạn bấm nút Ẩn Files rồi thử tìm cách "moi" mấy file đã ẩn ra xem có được không nha
    —————
    Code chỉ có vầy:

    Public Const Spec = "{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
    Sub HideFiles()
      Dim fldOldName As String, fldNewName As String
      Dim fldName As String, fleItem, fleNewPath As String
      On Error GoTo ExitSub
      fldName = ThisWorkbook.Path
      With CreateObject("Scripting.FileSystemObject")
        If .GetFolder(fldName).Files.Count > 1 Then
          fldOldName = .GetTempName
          Sheet1.Range("IV1").Value = fldOldName
         .CreateFolder fldName & "" & fldOldName
          For Each fleItem In .GetFolder(fldName).Files
            If fleItem.Path <> ThisWorkbook.FullName Then
              fleNewPath = fldName & "" & fldOldName & "" & fleItem.Name
              .MoveFile fleItem.Path, fleNewPath
            End If
          Next
          fldName = ThisWorkbook.Path & "" & fldOldName
          With .GetFolder(fldName)
            fldNewName = .Name & "." & Spec
            .Name = fldNewName
          End With
        End If
      End With
    ExitSub:
    End Sub

    Kinh nhờ,Đúng là ác thật! Vậy Đại Ca cho hỏi lôi ra bằng cách nào, Tks!

    Thì cứ tìm cách đi
    Nói chung đã thấy code rồi thì sẽ có cách lấy ra thôi (cũng bằng code)
    Code này chủ yếu "giấu" để tránh người không biết xài thôi —> Muốn dùng "tay" để "moi" ra chưa chắc ai cũng biết
    Ẹc… Ẹc…

    ~^^~ Mong Đại Ca Viết thêm cho em 1 cái code hiện lại! và có thể chỉ thêm cách lấy = tay được không?
    Em lỡ ném cái file báo cáo vào, giờ Search mãi không thấy … hix hix!

    Trong file đã có sẵn 1 code, giờ cho thêm code này vào:

    Sub ShowFiles()
      Dim fldOldName As String, fldNewName As String, fleItem
      On Error GoTo ExitSub
      fldOldName = ThisWorkbook.Path & "" & Sheet1.Range("IV1").Value
      fldNewName = fldOldName & "." & Spec
      With CreateObject("Scripting.FileSystemObject")
        If .FolderExists(fldNewName) Then
          For Each fleItem In .GetFolder(fldNewName).Files
            .MoveFile fleItem.Path, ThisWorkbook.Path & "" & fleItem.Name
          Next
          .DeleteFolder fldNewName
        End If
      End With
    ExitSub:
    End Sub

    Chạy nó và kiểm tra kết quả
    ———————-
    Show bằng tay thì cũng không có gì —> Dùng lệnh DOS
    StartRun gõ lệnh CMD
    – Trong cửa sổ DOS, bạn gõ lệnh RENAME rồi cách 1 khoảng trắng
    – Xong dùng chuột nắm lấy thằng thư mục có biểu tượng Computer rồi kéo thả vào cửa sổ DOS (ngay sau dòng lệnh RENAME ) —> Tiếp theo cách 1 khoảng trắng và gõ tên thư mục mới tùy ý rồi Enter
    —————————-

    Đại Ca xem Em làm thế này có đúng không ạ? Nhưng Mà chưa được!
    ———————————————–

    Hì! Tùy sở thích mỗi người Huynh àh! Ở diễn đàn này với Em Đại Ca NDU là số 1.

    Bài trước tôi dùng cell IV1 để lưu tên folder. Cũng hơi nguy hiểm chút, thôi thì sửa thành vầy cho chắc:

    Public Const Spec = "{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
    Sub HideFiles()
      Dim fldOldName As String, fldNewName As String
      Dim fldName As String, fleItem, fleNewPath As String
      On Error GoTo ExitSub
      fldName = ThisWorkbook.Path
      With CreateObject("Scripting.FileSystemObject")
        If .GetFolder(fldName).Files.Count > 1 Then
          fldOldName = .GetTempName
         .CreateFolder fldName & "" & fldOldName
          For Each fleItem In .GetFolder(fldName).Files
            If fleItem.Path <> ThisWorkbook.FullName Then
              fleNewPath = fldName & "" & fldOldName & "" & fleItem.Name
              .MoveFile fleItem.Path, fleNewPath
            End If
          Next
          fldName = ThisWorkbook.Path & "" & fldOldName
          With .GetFolder(fldName)
            fldNewName = .Name & "." & Spec
            .Name = fldNewName
          End With
        End If
      End With
    ExitSub:
    End Sub
    Sub ShowFiles()
      Dim fldNewName As String, fleItem, fldItem
      On Error GoTo ExitSub
      With CreateObject("Scripting.FileSystemObject")
        For Each fldItem In .GetFolder(ThisWorkbook.Path).SubFolders
          If InStr(fldItem.Name, Spec) Then
            fldNewName = fldItem.Path
            Exit For
          End If
        Next
        If .FolderExists(fldNewName) Then
          For Each fleItem In .GetFolder(fldNewName).Files
            .MoveFile fleItem.Path, ThisWorkbook.Path & "" & fleItem.Name
          Next
          .DeleteFolder fldNewName
        End If
      End With
    ExitSub:
    End Sub

    Tức là dò tìm tên thư mục, thấy thằng em nào mà trong tên của nó có chứa chuổi {20D04FE0-3AEA-1069-A2D8-08002B30309D} thì.. "mần"

    Mỗi lần ẩn file nó tạo một file với tên khác nhau, thử dời cái file này qua thư mục khác thì chạy code show không hiệu nghiệm, trả lại file đó về thư mục ban đầu rồi bấm show thì các file ẩn được hiện lên. Vậy cũng khá nguy hiểm nếu ta hoặc ai đó clean & clear các file temp này thì mệt mõi lắm!

    Đó không phải là tmp file, đó là 1 folder bạn à. Vì thế mà Clear file rác sẽ không có tác dụng với nó đâu
    Chuyện táy máy di dời hay xóa gì gì đó thì… ráng chịu thôi —> Các file trong thư mục Windows, System32 là thuộc dạng CẤM nhưng nếu bạn táy máy cũng có thể xóa được và hậu quả thì.. ráng chịu chứ trách ai

    Nếu máy của ta, ta xài cần gì phải Hide, nhưng nếu máy chung có khi ai đó mở thử cái folder đó ra và thấy chẳng có gì trong đó thì biết đâu họ thấy không có tác dụng gì thì họ xóa cũng là chuyện thường.

    Vậy nên phải thêm 1 công đoạn nữa là hide (thường) chú em này luôn. Nhưng khổ nổi chú em này lại đổi tên liên tục sau mỗi lần tạo nên "bó cái chân" luôn!

    Muốn "biệt tích" luôn cũng được… Dù nó có đổi tên liên tục cũng vẫn có cách để tìm

    Public Declare Sub SHChangeNotify Lib "shell32.dll" _
      (ByVal wEventId As Long, ByVal uFlags As Long, dwItem1 As Any, dwItem2 As Any)
    Public Const Spec = "{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
    Sub HideFiles()
      Dim fldOldName As String, fldNewName As String
      Dim fldName As String, fleItem, fleNewPath As String
      On Error GoTo ExitSub
      fldName = ThisWorkbook.Path
      With New Scripting.FileSystemObject
        If .GetFolder(fldName).Files.Count > 1 Then
          fldOldName = .GetTempName
         .CreateFolder fldName & "" & fldOldName
          For Each fleItem In .GetFolder(fldName).Files
            If fleItem.Path <> ThisWorkbook.FullName Then
              fleNewPath = fldName & "" & fldOldName & "" & fleItem.Name
              .MoveFile fleItem.Path, fleNewPath
            End If
          Next
          fldName = ThisWorkbook.Path & "" & fldOldName
          With .GetFolder(fldName)
            fldNewName = .Name & "." & Spec
            .Name = fldNewName
            .Attributes = vbHidden + vbSystem
          End With
        End If
      End With
    ExitSub:
      SHChangeNotify &H8000000, &H0&, 0, 0
    End Sub
    Sub ShowFiles()
      Dim fldNewName As String, fleItem, fldItem
      On Error GoTo ExitSub
      With New Scripting.FileSystemObject
        For Each fldItem In .GetFolder(ThisWorkbook.Path).SubFolders
          If InStr(fldItem.Name, Spec) Then
            fldNewName = fldItem.Path
            Exit For
          End If
        Next
        If .FolderExists(fldNewName) Then
          For Each fleItem In .GetFolder(fldNewName).Files
            .MoveFile fleItem.Path, ThisWorkbook.Path & "" & fleItem.Name
          Next
          .DeleteFolder fldNewName
        End If
      End With
    ExitSub:
    End Sub

    Thí nghiệm xem
    Ẹc… Ẹc…

    Ghê quá, hướng folfer vào My Computer?
    Nếu là tôi thì tôi hướng luôn …
    Public Const Spec = "{645FF040-5081-101B-9F08-00AA002F954E}"
    ——————–
    Không cần nhọc công như thế đâu Tuấn ạ. Chỉ cần chuột phải lên folder –> Rename –> gõ hic –> Xong
    Hoặc Rename –> bỏ đoạn cuối ".{20D04FE0-3AEA-1069-A2D8-08002B30309D}"

    Trong Windows Explorer, anh có thể rename 1 folder giả dạng 1 folder hệ thống nhưng làm ngược lại thì không được à nghen
    Anh phải gõ lệnh DOS mới xong
    Ở đây em muốn tự động hóa bằng code chứ làm bằng tay thì nhiều cách lắm

    Làm bằng code thì nhanh hơn bằng tay rồi. Ý tôi là khi mở lại bằng tay thì không phải DOS với kéo thả bằng tay gì cả.
    Mà "nhưng làm ngược lại thì không được à nghen" có nghĩa là thế nào?
    Giả sử ta có folder "bla"
    1. Ẩn (đây là xuôi hay ngược?): chuột phải lên "bla" –> rename –> dán thêm ".{20D04FE0-3AEA-1069-A2D8-08002B30309D}" vào đuôi để thành "bla.{20D04FE0-3AEA-1069-A2D8-08002B30309D}" –> xong
    2. Hiện (đây là ngược hay xuôi?): chuột phải lên "bla.{20D04FE0-3AEA-1069-A2D8-08002B30309D}" –> rename –> bỏ đuôi ".{20D04FE0-3AEA-1069-A2D8-08002B30309D}" –> xong
    Dù là xuôi hay ngược thì cũng chả cần DOS với kéo thả đâu. Cả xuôi ngược đều có thể làm bằng tay như trên nhưng ta viết code cho nó nhanh thôi.

    Làm bằng code thì nhanh hơn bằng tay rồi. Ý tôi là khi mở lại bằng tay thì không phải DOS với kéo thả bằng tay gì cả.
    Mà "nhưng làm ngược lại thì không được à nghen" có nghĩa là thế nào?

    Ý em nói ngược lại làm không được nghĩa là Rename ngược lại trong môi trường Windows Explorer đó anh
    Anh rename từ 1 folder bình thường thành folder hệ thống thì anh dùng cái gì cũng được (bằng DOS hoặc F2 ngay trong cửa sổ Explorer). nhưng nếu folder ấy đã thành folder hệ thống rồi thì anh không thể đổi ngược lại trong explorer (có thể rename trong DOS hoặc WinRAR cũng được)
    Ẹc… Ẹc…

    Dù là xuôi hay ngược thì cũng chả cần DOS với kéo thả đâu. Cả xuôi ngược đều có thể làm bằng tay như trên nhưng ta viết code cho nó nhanh thôi.

    Không biết máy anh thế nào chứ từ hồi đó đến giờ em thử rất nhiều máy, chả có máy nào cho phép Rename ngược lại theo kiểu bấm F2 cả.
    Không biết các bạn khác thì sao?

    https://www.mediafire.com/?vl5kw9cu2kykheq

    Trên máy tôi có Win XP Home.
    Nếu đã có "bla.{20D04FE0-3AEA-1069-A2D8-08002B30309D}" thì:
    chuột phải lên "bla.{20D04FE0-3AEA-1069-A2D8-08002B30309D}" –> rename –> bỏ đuôi ".{20D04FE0-3AEA-1069-A2D8-08002B30309D}" –> xong

    -0ltZAh57_w

    Tôi quên không thử trên Win 7 và các hđh khác

    ồh, đơn giản quá! Như vậy còn gọi gì là khó lôi nữa nhỉ.
    Vậy Huynh [URL="https://www.giaiphapexcel.com/forum/member.php?43018-siwtom"%5Dsiwtom còn chiêu nào khác không?

    Thế bạn test thế nào?
    Nói thật là tôi test không được như vậy cả trên máy dùng Win XP và Win 7

    Em Test y hệt như video của Huynh [URL="https://www.giaiphapexcel.com/forum/member.php?43018-siwtom"%5Dsiwtom gửi!
    Chỉ cần gõ tên linh tinh là lấy được file ẩn
    Win của Em là XP3
    Đại ca xem lại code ở bài này nè. Làm theo video của Huynh [URL='https://www.giaiphapexcel.com/forum/member.php?43018-siwtom'%5Dsiwtom
    Sau khi cái hinh computer ẩn đi em show lên rồi sửa lại tên thì được.
    https://upfile.vn/Yxx
    Còn code ở các bài trước đúng là em làm theo cách đấy không được!

    Tuấn làm thế này nhé: Folder option –> thẻ View –> Bỏ chọn ở:
    1. Hide protected system files (cái này nhất thiết phải có)
    2. Hide extension … files (cái này thực ra không cần)

    Đại loại phải nhìn được hết là:

    rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D}

    Nếu chỉ nhìn được là

    rad4C874.tmp

    Thì dù đổi tên thế nào thì nó vẫn có "đuôi" {20D04FE0-3AEA-1069-A2D8-08002B30309D}, tức không hiệu quả

    Vì lúc đó Tuấn chỉ đổi tên của "rad4C874.tmp"

    Th1: rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D} –> hic

    Th2: rad4C874.tmp –> hic, nhưng đuôi bị ẩn vẫn còn

    Đây, nói có bằng chứng:
    1> Thử nghiệm trên Win XP SP3:

    0bjbHtIhTKA

    2> Thử nghiệm trên Win 7:

    8C_T1zQqpTE

    Vậy có thể là còn 1 setting nào đó ta chưa để ý đến
    Em biết chiêu này từ rất lâu nhưng chưa lần nào thử nghiệm giống được như anh cả
    ——————-
    Bạn thử vào Folder Options, check mục "Hide protected operating system files" rồi khởi động lại máy tính. Xong thử nghiệm lại xem

    Không phải thử đâu Tuấn à.
    Trên XP của tôi nếu check mục "Hide protected operating system files" thì đổi tên chắc chắn không thành công. Khỏi phải kiểm tra mất công.
    Vì lúc đó chỉ có tên rad4C874.tmp hiển thị nên dù đổi sang hic rồi kiểm tra properties thì nó vẫn là
    hic.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
    Nhưng nếu bỏ check mục "Hide protected operating system files"
    thì tên được hiển thị đầy đủ là
    rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
    và sau khi đổi tên thành hic thì cả cụm
    rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
    biến thành hic. Nhìn thấy icon của folder và properties cũng chỉ hiện tên hic.
    Tôi cũng đã thử trên Win 7 thì thất bại. Nguyên nhân là cho dù check … hay bỏ check … thì Win 7 vẫn chỉ hiển thị ad4C874.tmp chứ không chịu hiển thị đầy đủ
    rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
    như trên XP, vì thế sau khi đổi tên vẫn còn cái đuôi .{20D04FE0-3AEA-1069-A2D8-08002B30309D}
    —–
    Kết luận:
    1. trên Win 7 không thành công
    2, Trên XP thì phải bỏ check … để nhìn được toàn bộ
    rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
    rồi mới đổi tên. Nếu check … thì chỉ nhìn thấy rad4C874.tmp và đổi tên không thành công.

    —–
    Kết luận:
    1. trên Win 7 không thành công
    2, Trên XP thì phải bỏ check … để nhìn được toàn bộ
    rad4C874.tmp.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
    rồi mới đổi tên. Nếu check … thì chỉ nhìn thấy rad4C874.tmp và đổi tên không thành công.

    Em thì cho rằng.. tuỳ máy (hoặc tuỳ 1 setting nào đó ta chưa biết)
    Vì sáng giờ em đã thử trên 3 máy tính dùng Win XP… chẳng có trường hợp nào giống như anh đã mô tả cả —> Anh xem video clip thứ nhất của em đó thì biết
    Ôi mà thôi.. kệ đi, tạm cho qua trường hợp này. Giờ anh có cách nào ẩn file hay hay gửi lên cho mọi người tham khảo với
    Ẹc… Ẹc…

    Nếu nói đến "cấm" và khó (không?) "bẻ được bằng tay" mà chỉ bằng code thì phải dùng security của system.
    Cũng cần nói về một nguy hiểm. Nếu có thể phục hồi bằng tay thì không nguy hiểm gì. Nếu chỉ có thể phục hồi bằng code thì có nguy hiểm là khi sẩy ra sự cố trong system và không thể thực thi code thì thư mục sẽ bị "cấm tới ngàn thu". Vậy thư mục có các tài liệu quan trong thì không nên khóa kiểu này. Chỉ có các thư mục có tài liệu bình thường nhưng muốn khóa vì nhiều lý do nào đó (nhậy cảm?)
    Sau khi khóa thì thư mục vẫn nằm tơ hơ, không bị ẩn nhưng khi muốn mở thì … Access denied

    Sau khi bấm nút thì chọn thư mục để thiết lập hoặc gỡ bỏ Access denied.

    Code mới chỉ test cho vài thư mục trên XP home.
    ndu có vẻ thích món test nên tôi nhường cho món này.

    Cho em hỏi, nếu mình không access được, vậy virus nó có thể xâm nhập được vào thư mục này không ạ?

    Thực ra tôi viết code để giấu thư mục khỏi con mắt tò mò của dân thường dân đen thôi chứ không nghĩ tới virus. Nhưng bạn cứ thử suy nghĩ chút xem. Có cả code để mở lại thư mục. Vậy thì virus cũng có thể dùng code để mở. Nó có thể có code khác vượt hẳn code của tôi ấy chứ. Tất nhiên có thể virus không lường được là thư mục bị khóa nên không "mang theo đồ nghề". Vậy câu hỏi là nếu virus chỉ đơn thuần truy cập vào thư mục, sao chép , chuyển chỗ hay xóa các tập tin thì có được không. Thì bạn hãy tự đặt mình vào vị trí của con virus và thử viết code làm những việc trên xem sao. Code làm những việc liệt kê, sao chép, chuyển chỗ, đổi tên hay xóa các tập tin thì sức bạn có dư để viết. Thử xem sao.

    Em đã test trên Win 7 thấy Ok mức độ cấm cao quá
    Thưa chú siwtom Cháu sợ khi sẩy ra sự cố trong system và không thể thực thi code thì thư mục sẽ bị "cấm tới ngàn thu".
    Sự cố trong system không biết chú nói là sự cố đại loại như thế nào
    Khi sự cố ấy sảy ra cháu cài lại máy tính cùng phiên bản trước khi chạy Code sau đó chạy lại Code thì thư mục ấy có mở ra được không?
    Cháu tạo bản ghost khi sảy ra sự cố thì Ghost lại thì Sự cố trong system không còn nữa nhỉ?
    Sẽ phải dành nhiều thời gian để test trước khi sử dụng thật.

    Bạn ơi, thủ thuật không cho truy nhập này chỉ là việc thiết lập quyền thao tác của người dùng với thư mục trong Windows thôi mà. Những thiết lập này có thể điều chỉnh lại nếu bạn chính là người đã thực hiện hoặc người có quyền Admin. Trừ trường hợp bạn để chế độ mã hóa file (trong code của bác Siwtom không thấy làm điều này) thì có vấn đề. Nếu chỉ điều chỉnh quyền truy cập thì bạn có thể cấp lại quyền một cách đơn giản! Bác Siwtom cũng nói rõ điều này rồi mà, thậm chí bạn có thể dùng dòng lệnh để khôi phục quyền truy cập.

    Lưu ý: những thiết lập này không có tác dụng với các ổ cứng vẫn dùng file hệ thống dạng FAT (chỉ có hiệu quả đối với NTFS).

    Cách 1: Dùng lệnh trong màn hình CMD
    (Ví dụ với trường hợp của tôi, trong Windows 7 tôi chỉ cần lệnh này trong màn hình CMD)

    CACLS e:dhcp /t /e /g paulsteigel:F

    Cú pháp mẫu như sau:
    CACLS [File hoặc thư mục] /e /p [Tên người dùng trong windows cần cấp quyền]:[F: quản lý toàn quyền, R: chỉ đọc…]

    Cách 2: thao tác trong Windows
    Chạy chương trình của bác Tôm
    1995
    Bắt đầu chỉnh lại
    Nhấn phải chuột thư mục bị khóa, chọn Properties, chọn tiếp Security
    1994
    Bước 2
    Nhấn Advanced
    1993
    Bước 3
    Chọn Change Permission
    1992
    Bước 4
    Chọn người dùng có chữ Deny và nhấn Edit
    1991
    Bước 5
    Chọn Full Control trong cột Allow. Nhấn OK, OK …. và xong!
    1990

    Ok

    Đúng như bạn nghĩ, code không mã hóa gì cả.
    Một là viết chơi (vọc), hai là chống "dân thường, dân đen"
    Bản thân tôi không dùng code trên mà tắt cả mọi tập tin riêng tư, nhạy cảm … tôi cho vào 1 thư mục. Thư mục thì mở được nhưng nó chỉ chứa các tập tin đã được mã hóa. Muốn dùng thì nhập mật khẩu thì phần mềm sẽ giải mã. Cũng là loại nén như WinRAR + password thôi. THế là đủ cho nhu cầu cá nhân.

    Lưu ý: những thiết lập này không có tác dụng với các ổ cứng vẫn dùng file hệ thống dạng FAT (chỉ có hiệu quả đối với NTFS).

    Chính xác. Nếu là FAT16, FAT32 thì không có chuyện bảo mật gì cả.

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm