Oppure

Loading
03/09/12 17:33
Brenza
Ciao, sto compilando un programma in vb.net..
Vorrei far si che quando il programma è in esecuzione sia impossibile modificare\rinominare\cancellare un determinato file sul disco del computer da windows o da altre applicazioni.
Se si potesse impedire anche l'accesso in sola lettura non mi dispiacerebbe ma non è indispensabile.


Se poteste indirizzarmi nella giusta direzione ve ne sarei immensamente grato! :)
Ultima modifica effettuata da Brenza 03/09/12 17:34
aaa
03/09/12 18:25
tasx
aaa
05/09/12 11:45
mattia1481
Puoi farlo inizializzando un'istanza della classe System.IO.FileStream :

Dim fs As New System.IO.FileStream( _
"Percorso completo del file", _
System.IO.FileMode.Open, _
System.IO.FileAccess.Read, _
System.IO.FileShare.None) <-- Questo valore impedisce anche la sola lettura del file da altri processi.

Per sbloccare il file basterà chiamare la funzione Close dell'oggetto System.IO.FileStream.

Buon lavoro.

Ciao
aaa
05/09/12 12:03
Brenza
Ciao, prima di tutto grazie per le risposte!

Ho provato il metodo suggerito da mattia ed effettivamente funziona solo che il file rimane bloccato solo per pochi istanti.. =(

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim fs As New System.IO.FileStream("C:\PROVA.txt", System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, System.IO.FileShare.None)
End Sub


Qualcuno sa spiegarmi perché?
Forse non va bene che lo inserisca in MyBase.Load???
aaa
05/09/12 12:11
Renny
Eh si, mi verrebbe da dire che una volta terminata la sub dell'evento load, l'oggetto fs che istanzi nella sub viene distrutto, come tutti gli oggetti non più utilizzati. Devi mettere la dichiarazione dell'oggetto fuori, nella classe form ed eseguire nell'evento load solo l'istanziamento con il costrutto new.
Facci sapere! :)
aaa
05/09/12 12:35
Brenza
Funziona! =)
Di nuovo grazie mille a tutti!


RISOLTO :D :D :D
aaa
05/09/12 17:27
mattia1481
Davo per scontato che sapessi che una variabile dichiarata in una procedura termina di esistere al finire della procedura in questione.

Ancora buon lavoro, ciao!

;-)
aaa