validare un percorso unc
-
venerdì 13 aprile 2012 11:13
Salve, ho l'esigenza di verificare la correttezza di una stringa che rappresenta un percorso unc, ho trovato una funzione che dovrebbe risolvere il mio problema. La cosa strana che questa funzione ritorna senpre false anche quando il precorso è chiaramente valido.
questa è la funzione:
<DllImport("shlwapi.dll")> _
Public Shared Function PathIsUNC(<MarshalAs(UnmanagedType.LPTStr)> Byval pszPath as String) As<MarshalAs(UnmanagedType.Bool)>boolean
end function
Public Shared Function isUNCPath(ByVal sPath as String) as boolean
return PathIsUNC(sPath)
end Function
grazie
Marco
Tutte le risposte
-
venerdì 13 aprile 2012 12:24
Con "validare" intendi solo verificare che il percorso sia formalmente corretto, oppure vuoi assicurarti che esista e sia accessibile?
In quest'ultimo caso, puoi usare il metodo Directory.Exists.
Marco Minerva [MCPD]
Blog: http://blogs.ugidotnet.org/marcom
Twitter: @marcominerva -
venerdì 13 aprile 2012 12:48
..si vorrei verificare esclusivamente se il formato è corretto, potrei risolvere il problema magari con una regular expression, ma dal momento che esiste un'api specifica vorrei poterla utilizzare.
ciao
- Modificato dany996 venerdì 13 aprile 2012 12:56
-
venerdì 13 aprile 2012 13:07
Molto meglio usare le Regular Expression... Il Platform Invoke dovrebbe essere tenuto solo come ultima soluzione, se non ci sono altri modi per ottenere il risultato voluto.
Marco Minerva [MCPD]
Blog: http://blogs.ugidotnet.org/marcom
Twitter: @marcominerva -
venerdì 13 aprile 2012 13:13
concordo.. ma cosa sbaglio, perchè non funziona?
-
venerdì 13 aprile 2012 13:49
E' sbagliato il parametro di MarshalAs che usi per l'argomento pszPath. Devi usare UnmanagedType.LPStr (oppure più semplicemente puoi rimuovere l'attributo MarshalAs e usare il marshaling di default).Marco Minerva [MCPD]
Blog: http://blogs.ugidotnet.org/marcom
Twitter: @marcominerva- Contrassegnato come risposta dany996 venerdì 13 aprile 2012 14:43
-
venerdì 13 aprile 2012 14:45LPStr=Stringa di caratteri ANSI a byte singolo con terminazione null. .String or System.Text.StringBuilder data types" id="mt19" jQuery17109632241526126446="19">È possibile utilizzare questo membro sui tipi di dati System.String o System.Text.StringBuilder.
LPTStr= Stringa di caratteri dipendente dal sistema operativo, ANSI su Windows 98, Unicode su Windows NT e Windows XP. LPTStr non è supportata
<span data-guid="a180bc056b4baf4302ed9aff67a6343f" data-source="This value is only supported for platform invoke, and not COM interop, because exporting a string of type LPTStr is not supported." id="mt23" jQuery17109632241526126446="23">
..neanche in un milione di anni avrei trovato la soluzione, grazie marco!

