Questo sembra fare il trucco (forse con un avvertimento), per trovare tutte le cartelle a cui l'utente "someuser" ha accesso, in questo esempio sull'unità C, usando il comando icacls di Windows incorporato:
icacls c:\*. /findsid someuser /t /c /l
Il / t è necessario per dirlo per ricorrere alle directory. Il / c è necessario per dirlo per andare avanti anche se si verificano errori. Il / l lo fa funzionare con collegamenti simbolici (se presenti). (Quest'ultima è una L e queste bandiere possono essere maiuscole o minuscole.)
Il *.
sarà riconosciuto dal DOS veterani come il modo di dire "cercare per le directory, non file". Naturalmente, se si desidera trovare file e non cartelle, modificarlo in *.*
e, naturalmente, è possibile puntarlo a qualsiasi unità o eseguirlo da qualsiasi cartella e lasciare il percorso dell'unità / cartella e lasciarlo cercare in relazione a quello solo cartella.
Ho cercato la stessa risposta del PO, e ho trovato questa voce, ma sono rimasto sconvolto nel vedere solo un'offerta basata su uno strumento scaricabile. Come altri, ho preferito usare qualcosa di incorporato e l'ho trovato in questo strumento icacls.
E ho confermato che funziona su Windows Server 2012, 2008 e Windows 7, quindi sospetto che funzionerà anche su Server 2003, Windows 8 e così via.
L'elenco risultante saranno le cartelle indicate riga dopo riga, come ad esempio:
SID trovato: c: \ somedir \ somesubdir.
Si noti che se si esegue questo come un utente che non dispone di autorizzazioni per l'attraversamento di alcune directory, si otterranno errori interlacciati nei risultati come:
c: \ Informazioni sul volume del sistema: accesso negato.
E se stai cercando un'intera unità, ciò potrebbe comportare centinaia di tali errori, rendendo difficile trovare al loro interno i risultati.
Alcuni potrebbero pensare che la risposta sia eseguire la riga di comando come amministratore, ma ciò causerà semplicemente la visualizzazione di molti più errori di questo tipo, poiché ora attraverserai le cartelle che erano state precedentemente nascoste.
Ora, se tu fossi interessato a nascondere quegli errori, non sarai in grado di usare un comando find per reindirizzare solo i risultati che hanno successo (quelli che fanno riferimento a "SID trovato"), perché gli errori NON verranno filtrati dalla pipe al comando find. Invece, se si desidera rimuovere tutti gli errori, è necessario utilizzare il trucco piuttosto oscuro di reindirizzare il flusso di errori (stderr) al "bit bucket" utilizzando 2>nul:
. Quindi l'esempio sopra diventerebbe:
icacls c:\*. /findsid someuser /t /c /l 2>nul:
Basta fare attenzione che alcune delle cartelle che hanno generato tali errori, i cui errori sono ora nascosti, potrebbero essere cartelle a cui il nome "someuser" ha accesso, ma a cui NON si ha. Quindi potresti voler pensarci due volte semplicemente ignorando questi errori. ma se vuoi, è così che puoi farlo.
Questa possibilità potenzialmente limita il valore di questa risposta, mi rendo conto. Se qualcuno con una maggiore familiarità con le cose desidera espandere o correggere la mia risposta, la accolgo con favore.