이 기능은 내장 Windows icacls 명령을 사용하여 C 드라이브에서 "someuser"사용자가 액세스 할 수있는 모든 폴더를 찾기 위해 속임수를 사용하는 것처럼 보입니다.
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 : \ 시스템 볼륨 정보 : 액세스가 거부되었습니다.
그리고 전체 드라이브를 검색하는 경우 수백 개의 이러한 오류가 발생하여 결과를 찾기가 어려울 수 있습니다.
어떤 사람들은 명령 줄을 관리자 권한으로 실행하는 것이 답이라고 생각할 수도 있지만, 이전에는 숨겨져 있던 폴더를 탐색 할 때 훨씬 더 많은 오류가 표시 될 것입니다.
이제 이러한 오류를 숨기고 싶다면 find 명령을 사용하여 오류가 필터링되지 않기 때문에 DO가 성공한 결과 (DO는 "SID found"를 참조하는 결과) 만 파이프 할 수 없습니다. 파이프를 통해 find 명령으로 이동하십시오. 대신 모든 오류를 제거하려면을 사용하여 오류 스트림 (stderr)을 "비트 버킷"으로 리디렉션하는 다소 모호한 트릭을 사용해야합니다 2>nul:
. 따라서 위의 예는 다음과 같습니다.
icacls c:\*. /findsid someuser /t /c /l 2>nul:
이러한 오류를 생성 한 일부 폴더 (현재 오류가 숨겨져 있음)는 명명 된 "someuser"가 액세스 할 수 있지만 사용자가 액세스 할 수없는 폴더 일 수도 있습니다. 따라서 단순히 이러한 오류를 무시하는 것에 대해 두 번 생각할 수 있습니다. 하지만 원한다면 그렇게 할 수 있습니다.
그 가능성은 잠재적 으로이 답변의 가치를 제한한다고 생각합니다. 사물에 더 익숙한 사람이 내 대답을 확장하거나 수정하고 싶다면 환영합니다.