Creare directory

lunedì 12 luglio 2010 - 17.02
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010

sergio58 Profilo | Junior Member

Salve a tutti, sono passato da poco tempo in VB2010 e mi trovo di fronte alla seguente difficoltà. Prima, in Vb2005 per creare una cartella con nome variabile usavo il codice: System.IO.Directory.CreateDirectory("C:\Programmi\EldaSuite\EldaFile\" & strAnno)
VB2010 express non mi accetta la variabile strAnno , ed il programma non va avanti , ma non mi dà nessun tipo di errore, solo non crea la cartella ed esce dalla routi
Esiste un modo per creare una directory con il nome contenuto in una variabile ?

Grazie a tutti :Sergio

freeteo Profilo | Guru

Ciao,
il fatto che non ti accetti la variabile non è possibile , forse è nulla? oppure hai qualche carattere che non va bene?
Prova a verificare in debug (guardando il valore nella finestra Watch) se la stringa che si compone del primo pezzo di dir, e poi la variabile è un Path corretto dal punto di vista di caratteri etc...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

sergio58 Profilo | Junior Member

Il problema è nel nome della cartella Programmi, se creo la directory in C:\ & strAnno , va bene. Non appena aggiungo "C:\Programmi\ & stranno esce dalla routine. Qualche suggerimento su come impostare il nome della cartella Programmi ?
N.B. La cartella Programmi esiste naturalmente , ma sembra non sia accessibile

Ciao Sergio

freeteo Profilo | Guru

Ciao,
forse allora non hai accesso, o cmq non è corretto il nome, prova a verificare cosa ti torna il Framework con questo metodo:
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

sergio58 Profilo | Junior Member

E' una questione di permesso di accesso, perchè in VS2010 esiste la classe FileIoPermission.
l'esempio è :
Dim f2 As New FileIOPermission(FileIOPermissionAccess.Read, "C:\test_r")
f2.AddPathList(FileIOPermissionAccess.Write Or _
FileIOPermissionAccess.Read, "C:\example\out.txt")
dove l’oggetto f2 rappresenta le autorizzazioni per la lettura di C:\test_r e per la lettura e scrittura di C:\esempio\out.txt. Read e Write rappresentano le autorizzazioni per file/cartella descritte in precedenza (come da esempio)

Solo che nono sò come implementarlo per arrivare a System.IO.Directory.CreateDirectory("C:\Programmi\EldaSuite\EldaFile" & strAnno)
Cioè f2 non presenta proprietà di directory.

Sai dirmi qualcosa in più ?

freeteo Profilo | Guru

Ciao,
ma scusa non hai accesso con l'utente a quella directory? allora significa che devi parlare con il sistemista e fartelo dare, perchè lavorare con gli accessi su una cartella, alla quale l'accesso al padre è negato è qualcosa che riguarda il sistemista che ti ha "blindato" troppo l'utente più che perdere tempo a fare qualcosa via codice ...secondo me un applicativo che deve scrivere su una dir deve poterlo fare, altrimenti cambia dir...non ha senso intestardirsi sui permessi.

Ad ogni modo,puoi provare anche con questo codice:
http://msdn.microsoft.com/en-us/library/system.io.directory.setaccesscontrol.aspx

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

sergio58 Profilo | Junior Member

Scusa ma non riesco, puoi postarmi un esempio in codice ?
Grazie Sergio

willy_80 Profilo | Senior Member

Hai provato a creare una cartella con all'interno quello che ti serve in un percorso "sicuro" tipo quello dell'applicazione "Application.StartupPath" per poi spostare o copiare tutta la cartella nel path voluto? magari eviti questo problema...

sergio58 Profilo | Junior Member

Questa prova l'ho già fatta e funziona. Io volevo accedere a "Programmi" per non cambiare il codice del percorso in tutti i programmi (Non uso il DataBase). Ma credo che dovrò modificare il percorso.
Grazie per l'interessamento

Sergio

freeteo Profilo | Guru

Ciao,
come ti dicevo secondo me è un problema di permessi, dovresti indagare se hai qualche restrizione sull'utente con cui gira l'applicazione.
Hai provato con un utente Amministratore?

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5