สิ่งนี้ดูเหมือนจะทำเคล็ดลับ (อาจจะเป็นข้อแม้) เพื่อค้นหาโฟลเดอร์ทั้งหมดที่ผู้ใช้ "someuser" มีการเข้าถึงในตัวอย่างนี้ในไดรฟ์ C โดยใช้คำสั่ง icacls Windows ในตัว:
icacls c:\*. /findsid someuser /t /c /l
จำเป็นต้องใช้ / t เพื่อบอกให้รีไดเร็กตอรีไดเรกทอรี จำเป็นต้องใช้ / c เพื่อบอกให้ดำเนินต่อไปแม้ว่าจะพบข้อผิดพลาด / l ทำให้การทำงานกับลิงก์สัญลักษณ์ (ถ้ามี) (อันสุดท้ายคือ L และแฟล็กเหล่านี้สามารถเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก)
*.
จะได้รับการยอมรับจาก DOS เก่านับเป็นวิธีการที่จะบอกว่า "ดูไดเรกทอรีไม่ไฟล์" แน่นอนถ้าคุณต้องการค้นหาไฟล์และไม่ใช่โฟลเดอร์เปลี่ยนเป็น*.*
และแน่นอนคุณสามารถชี้ไปที่ไดรฟ์ใด ๆ หรือเรียกใช้จากโฟลเดอร์ใด ๆ และออกจากเส้นทางไดรฟ์ / โฟลเดอร์และปล่อยให้มันค้นหาเทียบกับที่ โฟลเดอร์เท่านั้น
ฉันค้นหาคำตอบเดียวกับ OP และพบรายการนี้ แต่รู้สึกผิดที่เห็นเฉพาะข้อเสนอจากเครื่องมือที่ดาวน์โหลดได้ เช่นเดียวกับคนอื่น ๆ ฉันชอบที่จะใช้บางสิ่งในตัวและฉันพบมันในเครื่องมือ icacls นี้
และฉันได้ยืนยันว่ามันใช้งานได้บน Windows Server 2012, 2008 และ Windows 7 ดังนั้นฉันสงสัยว่ามันจะทำงานได้ดีใน Server 2003, Windows 8 และอื่น ๆ
รายการผลลัพธ์จะเป็นโฟลเดอร์ที่ระบุบรรทัดต่อจากบรรทัดเช่น:
SID พบ: c: \ somedir \ somesubdir
โปรดทราบว่าหากคุณเรียกใช้สิ่งนี้ในฐานะผู้ใช้ที่ไม่มีสิทธิ์ในการเข้าถึงบางไดเรกทอรีคุณจะได้รับข้อผิดพลาดในผลลัพธ์เช่น:
c: \ System Volume Information: การเข้าถึงถูกปฏิเสธ
และหากคุณกำลังค้นหาไดรฟ์ทั้งหมดนั่นอาจส่งผลให้เกิดข้อผิดพลาดหลายร้อยอย่างทำให้ยากต่อการค้นหาผลลัพธ์
บางคนอาจคิดว่าคำตอบคือการเรียกใช้บรรทัดคำสั่งในฐานะผู้ดูแลระบบ แต่นั่นจะทำให้เกิดข้อผิดพลาดดังกล่าวมากขึ้นเนื่องจากคุณจะข้ามโฟลเดอร์ที่ซ่อนไว้ก่อนหน้านี้
ตอนนี้หากคุณสนใจที่จะซ่อนข้อผิดพลาดเหล่านั้นคุณจะไม่สามารถใช้คำสั่ง find เพื่อไพพ์ผลลัพธ์ที่ทำสำเร็จเท่านั้น (ข้อผิดพลาดที่อ้างถึง "พบ SID") เนื่องจากข้อผิดพลาดจะไม่ถูกกรองออก โดยไพพ์ไปยังคำสั่ง find แต่ถ้าคุณต้องการที่จะลบข้อผิดพลาดทั้งหมดที่คุณจำเป็นต้องใช้เคล็ดลับที่ค่อนข้างคลุมเครือของการเปลี่ยนเส้นทางกระแสข้อผิดพลาด (stderr) กับ "ถังบิต" 2>nul:
โดยใช้ ดังนั้นตัวอย่างข้างต้นจะกลายเป็น:
icacls c:\*. /findsid someuser /t /c /l 2>nul:
เพียงแค่ระวังว่าบางโฟลเดอร์ที่สร้างข้อผิดพลาดซึ่งตอนนี้ข้อผิดพลาดถูกซ่อนอยู่อาจเป็นโฟลเดอร์ที่ชื่อ "someuser" มีการเข้าถึง แต่ที่คุณทำไม่ได้ ดังนั้นคุณอาจต้องคิดสองครั้งเกี่ยวกับการละเว้นข้อผิดพลาดเหล่านี้ แต่ถ้าคุณต้องการนั่นคือวิธีที่คุณสามารถทำได้
ความเป็นไปได้นั้นอาจ จำกัด ค่าของคำตอบนี้ หากใครที่มีความคุ้นเคยกับสิ่งต่าง ๆ ต้องการที่จะขยายหรือแก้ไขคำตอบของฉันฉันยินดีต้อนรับ