2011-02-09 8 views
11

Desidero verificare rapidamente se in un percorso completo viene utilizzato un punto di giunzione. Ho già una funzione per testare una cartella come IsJunction() ma forse c'è un'altra soluzione per non chiamare IsJunction() su ogni sottocartella.C# rileva le giunzioni della cartella in un percorso

Quindi sto cercando una funzione come HasJunctionsInPath(string path) senza testare ogni cartella del percorso.

C'è qualcosa che può fare questo?

Edit:

O meglio ...

E 'possibile risolvere tutte le giunzioni in un percorso per ottenere la posizione reale di un file o una cartella? Questo sarebbe ancora meglio risolvere il mio problema e posso ancora confrontare il risultato con il percorso originale per implementare una funzione bool HasJunctionsInPath(string path).

risposta

2

Per quanto ne so, non esiste un'implementazione immediata in C# per gestire direttamente giunzioni/punti di analisi.

Quindi è necessario eseguire alcune operazioni di interoperabilità con kernel32.dll. Questo è un po 'complicato, ma trovi dei campioni. Avrete bisogno delle chiamate Create2() & DeviceIoControl().

Ecco un buon esempio per iniziare: http://www.codeproject.com/KB/vista/ReparsePointID.aspx?display=Print

utili link MSDN:

http://msdn.microsoft.com/en-us/library/cc232007%28PROT.13%29.aspx

http://msdn.microsoft.com/en-us/library/aa363858%28v=vs.85%29.aspx

http://msdn.microsoft.com/en-us/library/aa363216%28v=vs.85%29.aspx

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/7acd564f-0e9f-4295-8609-916af6675f0a

+0

Date un'occhiata a questo sito anche: http://pinvoke.net/default.aspx/kernel32.DeviceIoControl vi aiuterà a ottenere le firme. –

Problemi correlati