Wydaje się, że to załatwia sprawę (być może z zastrzeżeniem), aby znaleźć wszystkie foldery, do których użytkownik „someuser” ma dostęp, w tym przykładzie na dysku C, za pomocą wbudowanego polecenia icacls systemu Windows:
icacls c:\*. /findsid someuser /t /c /l
Opcja / t jest potrzebna, aby nakazać powtarzanie katalogów. / C jest potrzebne, aby powiedzieć mu, aby kontynuował pracę, nawet jeśli napotka błędy. / L sprawia, że działa z dowiązaniami symbolicznymi (jeśli istnieją). (Ten ostatni to L, a te flagi mogą być pisane wielkimi lub małymi literami.)
*.
Będą rozpoznawane przez DOS weteranów jako sposób powiedzieć „szukać katalogów, nie Files”. Oczywiście, jeśli chcesz znaleźć pliki, a nie foldery, zmień je *.*
i oczywiście możesz wskazać dowolny dysk lub uruchomić go z dowolnego folderu i pozostawić ścieżkę do dysku / folderu i pozwolić na wyszukiwanie względem tego tylko folder.
Szukałem tej samej odpowiedzi co OP i znalazłem ten wpis, ale byłem zaskoczony, gdy zobaczyłem tylko ofertę opartą na narzędziu do pobrania. Podobnie jak inni, wolałem używać czegoś wbudowanego i znalazłem to w tym narzędziu icacls.
Potwierdziłem, że działa on w systemach Windows Server 2012, 2008 i Windows 7, więc podejrzewam, że zadziała również w Server 2003, Windows 8 i tak dalej.
Wynikowa lista to foldery wskazane wiersz po wierszu, takie jak:
Znaleziono SID: c: \ somedir \ somesubdir.
Pamiętaj, że jeśli uruchomisz to jako użytkownik, który sam nie ma uprawnień do przeglądania niektórych katalogów, w wynikach pojawią się błędy, takie jak:
c: \ Informacje o woluminie systemowym: Odmowa dostępu.
A jeśli przeszukujesz cały dysk, może to spowodować setki takich błędów, co utrudni znalezienie w nich wyników.
Niektórzy mogą myśleć, że odpowiedzią jest uruchomienie wiersza poleceń jako administrator, ale to po prostu spowoduje, że pojawi się o wiele więcej takich błędów, ponieważ będziesz teraz przeglądał foldery, które wcześniej były ukryte.
Teraz, jeśli chciałbyś ukryć te błędy, nie będziesz w stanie użyć polecenia find do potokowania tylko tych wyników, które się powiedzie (te, które odnoszą się do „SID znaleziono”), ponieważ błędy NIE zostaną odfiltrowane za pomocą potoku do polecenia find. Zamiast tego, jeśli chcesz usunąć wszystkie błędy, musisz użyć dość niejasnej sztuczki przekierowania strumienia błędów (stderr) do „segmentu bitów” za pomocą 2>nul:
. Tak więc powyższy przykład wyglądałby następująco:
icacls c:\*. /findsid someuser /t /c /l 2>nul:
Uważaj tylko, że niektóre foldery, które generowały takie błędy, których błędy są teraz ukryte, mogą równie dobrze być folderami, do których ma dostęp tzw. „Someuser”, ale NIE TY. Możesz więc zastanowić się dwa razy, po prostu ignorując te błędy. ale jeśli chcesz, możesz to zrobić.
Zdaję sobie sprawę, że ta możliwość potencjalnie ogranicza wartość tej odpowiedzi. Jeśli ktoś bardziej zaznajomiony z rzeczami chciałby rozwinąć lub poprawić moją odpowiedź, z zadowoleniem ją przyjmę.