Điều này dường như thực hiện mẹo (có lẽ là một lời cảnh báo), để tìm tất cả các thư mục mà người dùng "someuser" có quyền truy cập, trong ví dụ này trên ổ C, sử dụng lệnh icacls tích hợp trong Windows:
icacls c:\*. /findsid someuser /t /c /l
/ T là cần thiết để nói với nó để lặp lại các thư mục. / C là cần thiết để bảo nó tiếp tục ngay cả khi nó gặp lỗi. / L làm cho nó hoạt động với các liên kết tượng trưng (nếu có). (Cái cuối cùng là chữ L và những lá cờ này có thể là chữ hoa hoặc chữ thường.)
Điều *.
này sẽ được các bộ định thời cũ của DOS công nhận là cách để nói "tìm thư mục, không phải tệp". Tất nhiên, nếu bạn muốn tìm tệp và không phải thư mục, hãy đổi nó thành *.*
, và tất nhiên bạn có thể trỏ nó vào bất kỳ ổ đĩa nào, hoặc chạy nó từ bất kỳ thư mục nào và rời khỏi đường dẫn ổ đĩa / thư mục và để nó tìm kiếm liên quan đến nó chỉ thư mục.
Tôi đã tìm kiếm câu trả lời tương tự như OP, và tìm thấy mục này, nhưng thật bất ngờ khi chỉ thấy một đề nghị dựa trên một công cụ có thể tải xuống. Giống như những người khác, tôi thích sử dụng một cái gì đó tích hợp và tôi đã tìm thấy nó, trong công cụ icacls này.
Và tôi đã xác nhận nó hoạt động trên Windows Server 2012, 2008 và Windows 7, vì vậy tôi nghi ngờ nó sẽ hoạt động tốt trong Server 2003, Windows 8, v.v.
Danh sách kết quả sẽ là các thư mục được chỉ định dòng sau dòng, chẳng hạn như:
Đã tìm thấy SID: c: \ somedir \ somesubdir.
Lưu ý rằng nếu bạn chạy nó với tư cách là người dùng không có quyền đối với một số thư mục đang được duyệt, bạn sẽ gặp lỗi xen kẽ trong các kết quả, chẳng hạn như:
c: \ Thông tin khối lượng hệ thống: Truy cập bị từ chối.
Và nếu bạn có thể đang tìm kiếm toàn bộ ổ đĩa, điều đó có thể dẫn đến hàng trăm lỗi như vậy, khiến cho việc tìm kiếm kết quả trong chúng trở nên khó khăn.
Một số người có thể nghĩ rằng câu trả lời là chạy dòng lệnh với tư cách quản trị viên, nhưng điều đó đơn giản sẽ gây ra nhiều lỗi như vậy xuất hiện, vì bây giờ bạn sẽ duyệt qua các thư mục đã bị ẩn trước đó.
Bây giờ, nếu bạn quan tâm đến việc che giấu các lỗi đó, bạn sẽ không thể sử dụng lệnh find để chỉ xử lý các kết quả DO thành công (những lỗi này tham chiếu đến "SID find"), vì các lỗi sẽ KHÔNG được lọc bằng đường ống đến lệnh find. Thay vào đó, nếu bạn muốn loại bỏ tất cả các lỗi, bạn cần sử dụng thủ thuật khá mơ hồ để chuyển hướng luồng lỗi (stderr) sang "bit bit" bằng cách sử dụng 2>nul:
. Vì vậy, ví dụ trên sẽ trở thành:
icacls c:\*. /findsid someuser /t /c /l 2>nul:
Chỉ cần lưu ý rằng một số thư mục đã tạo ra các lỗi như vậy, lỗi hiện đang bị ẩn, cũng có thể là các thư mục có tên "someuser" DOES có quyền truy cập nhưng BẠN thì không. Vì vậy, bạn có thể muốn nghĩ hai lần về việc bỏ qua những lỗi này. Nhưng nếu bạn muốn, đó là cách bạn có thể làm điều đó.
Khả năng đó không có khả năng giới hạn giá trị của câu trả lời này, tôi nhận ra. Nếu bất cứ ai quen thuộc hơn với mọi thứ muốn mở rộng hoặc sửa câu trả lời của tôi, tôi hoan nghênh điều đó.