Newsgroup: it.comp.lang.visual-basic
Titolo: [Vb.Net] Problema accesso ai file su cartelle condivise

ciao a tutti
Premetto che non sono un grandissimo esperto di Net poichè lo uso abbastanza
pienamente solo da un anno.
Questa più che una richiesta di aiuto è un desiderio di approfondimento,
visto che il problema pratico l'ho già risolto ed ora vado ad illustrare
come.
Innanzi tutto spiego la situazione che ha causato il problema.
Esiste un db access a cui accedono diversi utenti da diversi PC in rete con
applicativo scritto in VB6.
Nel server, dove risiede ovviamente il database, è attivo un programma
demone che controlla gli accessi utente e manutenziona il database.
Quest'ultimo di tanto in tanto subisce delle variazioni sulla sua struttura
a seguito di aggiornamenti software, per cui il programma demone mette in
standby tutti i client e crea una copia del database partendo da un nuovo
file access (fornito con l'aggiornamento). Con delle query di accodamento
vengono riversati i dati originari sul database copia che successivamente
viene sostituito al database originale nella cartella condivisa in cui si
trova.
Morale della favola: prima questa operazione veniva fatta tutta in VB6 e non
c'era nessun problema.
Da quando ho riscritto il demone in Vb.Net sono cominciati i problemi,
infatti la copia di un file non funziona esattamente come in VB6 (era da
immaginarlo direte voi) dove evidentemente danno per scontate una serie di
cose. Mi riferisco al livello di accesso consentito dagli utenti sul
file copiato nella cartella condivisa.
Copiando semplicemente il file (mi riferisco alla sostituzione del database
originale con la nuova copia che ho descritto prima) nella cartella
condivisa, gli altri utenti lo vedono correttamente ma non possono
accedervi, anche se la cartella e condivisa sia in lettura che scrittura.
Allora mi sono movimentato alla ricerca di qualcosa sulla guida e ho risolto
così:
miofile è ovviamente una stringa che contiene il nome del database
Dim fSecurity As FileSecurity = System.IO.File.GetAccessControl(miofile)
Dim accessRule As FileSystemAccessRule = New _
FileSystemAccessRule("Everyone", FileSystemRights.FullControl,  _
AccessControlType.Allow)
fSecurity.AddAccessRule(accessRule)
System.IO.File.SetAccessControl(miofile, fSecurity)
dopo questa operazione gli utenti accedono regolarmente al nuovo database.
Domande:
va bene come ho fatto? Ho trascurato qualcosa? Esistono modi migliori per 
risolvere il prblema?
cia a tutti

 cia a tutti
Scusa eh...ma perchè  clonare quello che tutti i programmi DB hanno
già? Utenti e ruoli???
Io continuo a dire (e sono un fan di access/jet) che per progetti
pesantemente multi utente (ossia con client frammentati e distribuiti
su vari dispositici hw) non se ne cava le gambe con access!
Infatti quello che tu fai sà tanto di "Sql server de noartri" ...ed
allora?
Perchè non usarlo visto che dotnet ha un provider specifico e che
l'express è gratis?
Mi ci sto convertendo anche io!!!
Una macchina dedicata(anche di riciclo per iniziare)..un ip(anche
dinamico con DynDns.org...per l'ipotesi client distribuito a livello
planetario)...al limite un certificato per la sicurezza dei client e
la criptazione della connessione.
Ci sono piani di backup, piani di recupero informazioni, gestone dei
ruoli, gestioni permessi a tutti i livelli che vuoi...perchè ti vuoi
fare del male?
..solo per capire eh !!!
:o)

Infatti quello che tu fai sà tanto di "Sql server de noartri" ...ed
allora?
Perchè non usarlo visto che dotnet ha un provider specifico e che
l'express è gratis?
Mi ci sto convertendo anche io!!!
era ora! l'hanno finalmente localizzatho in maremmano-prathese! :P
che, si badi, è sostanzialmente diverso dal maremmano-abruzzese.
non sbrana, pero' capperi se abbaia :)

...cose note, mi sto convertedo anche io se per questo.
Per il resto? 

 Per il resto?
...per il resto ? ....
per il resto ti vuoi del male....!
...continua così....tanto se funziona!!!
....anche se una cartella visibile "Everyone"...!!!
...e poi deve avere il tuo programma i permessi desiderati per dare a
sua volta i permessi...se non administrator poco ci manca!
...comunque...se funziona....

ok grazie