Здається, це зробити фокус (можливо, застереження), щоб знайти всі папки, до яких користувач "someuser" має доступ, у цьому прикладі на диску C, використовуючи вбудовану команду Windows icacls:
icacls c:\*. /findsid someuser /t /c /l
/ T необхідний, щоб сказати, щоб він повторював каталоги. / C необхідний, щоб сказати, щоб продовжувати роботу, навіть якщо він зіткнувся з помилками. / L змушує його працювати з символічними посиланнями (якщо такі є). (Остання з них - L, і ці прапори можуть бути великими або малими.)
*.
Буде визнано DOS старожилів як спосіб сказати «погляд для каталогів, а не файл». Звичайно, якщо ви хочете знайти файли, а не папки, змініть їх на *.*
, і, звичайно, ви можете вказати його на будь-який диск, або запустити його з будь-якої папки і залишити шлях диска / папки і дозволити йому шукати відносно цього лише папка.
Я шукав таку ж відповідь, що і ОП, і знайшов цей запис, але був розбитий, щоб побачити лише пропозицію, засновану на завантажуваному інструменті. Як і інші, я вважав за краще використовувати щось вбудоване, і знайшов це в цьому інструменті icacls.
І я підтвердив, що він працює в Windows Server 2012, 2008 та Windows 7, тому я підозрюю, що він буде добре працювати в Server 2003, Windows 8 тощо.
Отриманий список буде папками, зазначеними рядком за рядком, наприклад:
Знайдено SID: c: \ somedir \ somesubdir.
Зауважте, що якщо ви запускаєте це як користувач, який сам не має дозволу на проходження деяких каталогів, ви отримаєте помилки, переплетені в результатах, таких як:
c: \ Інформація про обсяг системи: доступ заборонено.
І якщо ви можете шукати весь диск, це може призвести до сотень таких помилок, що ускладнює пошук у них результатів.
Деякі можуть подумати, що відповідь полягає у запуску командного рядка в якості адміністратора, але це просто призведе до появи набагато більше таких помилок, оскільки тепер ви будете обходити папки, які раніше були приховані.
Тепер, якщо вам було цікаво приховати ці помилки, ви не зможете використовувати команду find, щоб передавати лише ті результати, які DO досягли успіху (ті, які DO посилаються на "SID знайдено"), оскільки помилки НЕ будуть відфільтровані по трубі до команди find. Натомість, якщо ви хочете видалити всі помилки, вам потрібно скористатися досить незрозумілим трюком перенаправлення потоку помилок (stderr) на "бітове відро" за допомогою 2>nul:
. Отже, наведеним вище прикладом стане:
icacls c:\*. /findsid someuser /t /c /l 2>nul:
Будьте обережні, що деякі з папок, які генерували такі помилки, помилки яких тепер приховані, цілком можуть бути папками, до яких має ім'я "someuser", але до яких ВАС немає. Тож ви можете подумати двічі про просто ігнорування цих помилок. але якщо ти хочеш, так це можна зробити.
Я розумію, що ця можливість потенційно обмежує значення цієї відповіді. Якщо хтось із ознайомленням із речами хотів би розширити чи виправити свою відповідь, я б вітаю це.