Esto parece hacer el truco (quizás con una advertencia), para encontrar todas las carpetas a las que el usuario "someuser" tiene acceso, en este ejemplo en la unidad C, utilizando el comando icacls incorporado de Windows:
icacls c:\*. /findsid someuser /t /c /l
El / t es necesario para indicarle que repita directorios. El / c es necesario para indicarle que continúe, incluso si encuentra errores. El / l hace que funcione con enlaces simbólicos (si los hay). (Esa última es una L, y estas banderas pueden ser mayúsculas o minúsculas).
Los *.
antiguos de DOS lo reconocerán como la forma de decir "buscar directorios, no archivos". Por supuesto, si desea buscar archivos y no carpetas, cámbielos *.*
y, por supuesto, puede apuntarlos a cualquier unidad o ejecutarlos desde cualquier carpeta y dejar la ruta de la unidad / carpeta y dejar que busque en relación con eso solo carpeta
Busqué la misma respuesta que el OP, y encontré esta entrada, pero me decepcionó ver solo una oferta basada en una herramienta descargable. Como otros, preferí usar algo incorporado, y lo encontré en esta herramienta icacls.
Y he confirmado que funciona en Windows Server 2012, 2008 y Windows 7, por lo que sospecho que funcionará también en Server 2003, Windows 8, etc.
La lista resultante será carpetas indicadas línea tras línea, tales como:
SID encontrado: c: \ somedir \ somesubdir.
Tenga en cuenta que si ejecuta esto como un usuario que no tiene permisos para recorrer algunos directorios, obtendrá errores intercalados en los resultados, tales como:
c: \ Información del volumen del sistema: acceso denegado.
Y si puede estar buscando una unidad completa, eso podría dar lugar a cientos de tales errores, lo que dificultaría encontrar dentro de ellos los resultados.
Algunos pueden pensar que la respuesta es ejecutar la línea de comando como administrador, pero eso simplemente provocará que aparezcan muchos más errores, ya que ahora atravesará carpetas que anteriormente estaban ocultas.
Ahora, si estaba interesado en ocultar esos errores, no podrá usar un comando de búsqueda para canalizar solo los resultados que sí tienen éxito (los que sí se refieren a "SID encontrado"), porque los errores NO se filtrarán por la tubería al comando encontrar. En cambio, si desea eliminar todos los errores, debe utilizar el truco bastante oscuro de redirigir la secuencia de errores (stderr) al "depósito de bits" mediante el uso 2>nul:
. Entonces el ejemplo anterior se convertiría en:
icacls c:\*. /findsid someuser /t /c /l 2>nul:
Solo tenga en cuenta que algunas de las carpetas que generaron tales errores, cuyos errores ahora están ocultos, bien pueden ser carpetas a las que el "usuario" tiene acceso, pero que USTEDES no tienen. Por lo tanto, puede pensar dos veces antes de simplemente ignorar estos errores. pero si quieres, así es como puedes hacerlo.
Me doy cuenta de que esa posibilidad limita el valor de esta respuesta. Si alguien con más familiaridad con las cosas quisiera ampliar o corregir mi respuesta, lo agradecería.