Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Impedire la modifica di un file esterno al programma quando questo è in esecuzione
Forum - C# / VB.NET - [VB.NET] Impedire la modifica di un file esterno al programma quando questo è in esecuzione

Avatar
Brenza (Normal User)
Rookie


Messaggi: 21
Iscritto: 30/10/2010

Segnala al moderatore
Postato alle 19:33
Lunedì, 03/09/2012
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 il 03/09/2012 alle 19:34
PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 20:25
Lunedì, 03/09/2012
Ciao, potrebbe esserti utile questo: http://social.msdn.microsoft.com/Forums/en-US/csharpgenera ...

ciaociao :k::k:


... sei un proxy che perde i pacchetti ...
PM Quote
Avatar
mattia1481 (Member)
Pro


Messaggi: 84
Iscritto: 03/11/2008

Segnala al moderatore
Postato alle 13:45
Mercoledì, 05/09/2012
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


Mattia Riviera
PM Quote
Avatar
Brenza (Normal User)
Rookie


Messaggi: 21
Iscritto: 30/10/2010

Segnala al moderatore
Postato alle 14:03
Mercoledì, 05/09/2012
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.. =(

Codice sorgente - presumibilmente VB.NET

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



Qualcuno sa spiegarmi perché?
Forse non va bene che lo inserisca in MyBase.Load???

PM Quote
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 14:11
Mercoledì, 05/09/2012
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! :)


In attesa della fine del mondo, fissata per l'anno prossimo, sono alla ricerca di un notaio con cui fare testamento...
PM Quote
Avatar
Brenza (Normal User)
Rookie


Messaggi: 21
Iscritto: 30/10/2010

Segnala al moderatore
Postato alle 14:35
Mercoledì, 05/09/2012
Funziona! =)
Di nuovo grazie mille a tutti!


RISOLTO :D :D :D

PM Quote
Avatar
mattia1481 (Member)
Pro


Messaggi: 84
Iscritto: 03/11/2008

Segnala al moderatore
Postato alle 19:27
Mercoledì, 05/09/2012
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!

;-)


Mattia Riviera
PM Quote