Cela semble faire l'affaire (avec peut-être une mise en garde), pour trouver tous les dossiers auxquels l'utilisateur "someuser" a accès, dans cet exemple sur le lecteur C, en utilisant la commande intégrée icacls de Windows:
icacls c:\*. /findsid someuser /t /c /l
Le / t est nécessaire pour lui dire de recursir les répertoires. Le / c est nécessaire pour lui dire de continuer même s'il rencontre des erreurs. Le / l le fait fonctionner avec des liens symboliques (le cas échéant). (Ce dernier est un L, et ces drapeaux peuvent être en majuscules ou en minuscules.)
Le *.
sera reconnu par les anciens du DOS comme la façon de dire "recherchez les répertoires, pas les fichiers". Bien sûr, si vous voulez trouver des fichiers et non des dossiers, changez-le en *.*
, et bien sûr vous pouvez le pointer vers n'importe quel lecteur, ou l'exécuter à partir de n'importe quel dossier et laisser le chemin du lecteur / dossier et le laisser rechercher par rapport à cela dossier uniquement.
J'ai cherché la même réponse que l'OP, et j'ai trouvé cette entrée, mais j'ai été déçu de ne voir qu'une offre basée sur un outil téléchargeable. Comme d'autres, j'ai préféré utiliser quelque chose de intégré, et je l'ai trouvé, dans cet outil icacls.
Et j'ai confirmé que cela fonctionne sur Windows Server 2012, 2008 et Windows 7, donc je soupçonne que cela fonctionnera également dans Server 2003, Windows 8, etc.
La liste résultante sera des dossiers indiqués ligne après ligne, tels que:
SID trouvé: c: \ somedir \ somesubdir.
Notez que si vous l'exécutez en tant qu'utilisateur qui ne dispose pas lui-même des autorisations pour certains répertoires traversés, vous obtiendrez des erreurs entrelacées dans les résultats tels que:
c: \ System Volume Information: l'accès est refusé.
Et si vous recherchez un lecteur entier, cela pourrait entraîner des centaines de ces erreurs, ce qui rend difficile de trouver en eux les résultats.
Certains peuvent penser que la réponse est d'exécuter la ligne de commande en tant qu'administrateur, mais cela provoquera simplement beaucoup plus de telles erreurs, car vous allez maintenant parcourir des dossiers qui étaient auparavant masqués.
Maintenant, si vous vouliez cacher ces erreurs, vous ne pourrez pas utiliser une commande find pour ne diriger que les résultats qui réussissent (ceux qui font référence à "SID trouvé"), car les erreurs ne seront PAS filtrées par le tuyau à la commande find. Au lieu de cela, si vous souhaitez supprimer toutes les erreurs, vous devez utiliser l'astuce plutôt obscure de rediriger le flux d'erreurs (stderr) vers le "compartiment de bits" à l'aide de 2>nul:
. Ainsi, l'exemple ci-dessus deviendrait:
icacls c:\*. /findsid someuser /t /c /l 2>nul:
Gardez simplement à l'esprit que certains des dossiers qui ont généré de telles erreurs, lesquelles sont désormais masquées, peuvent bien être des dossiers auxquels le "someuser" DOIT avoir accès mais auxquels VOUS n'avez pas. Donc, vous voudrez peut-être réfléchir à deux fois pour ignorer simplement ces erreurs. mais si vous le souhaitez, c'est comme ça que vous pouvez le faire.
Je comprends que cette possibilité limite potentiellement la valeur de cette réponse. Si quelqu'un connaissant mieux les choses souhaite approfondir ou corriger ma réponse, je m'en réjouirais.