Newsgroup: it.comp.lang.visual-basic
Titolo: [.NET] Cartella Read-Write per tutti gli utenti Windows

Salve a tutti,
ho necessità di conoscere il percorso di una cartella Read-Write per qualsiasi utente Windows.
Nello specifico ho un programma che ha un file db a cui l'utente loggato in quel momento sul pc deve poter accedere in lettura e scrittura.
In fase di installazione l'utente può scegliere una cartella personalizzata oppure utilizzare quella che propongo io di default.
Essendo gli utenti degli ottici, raramente sceglieranno una cartella personalizzata. Il 99% sceglie quella di default premento semplicemente "Avanti".
Avevo guardato in giro e mi era sembrato che Environment.SpecialFolder.CommonApplicationData fosse la cartella giusta.
Molti utenti però mi segnalano possono accedere in sola lettura ma non in lettura scrittura. Questo avviene sia su Vista che su Win 7.
Qualcuno saprebbe dirmi se esiste una cartella in cui sono ragionevolmente sicuro che tutti gli utenti possano leggere\scrivere?
Grazie,
Nicola

 quella di default premento semplicemente "Avanti".
in fase di installazione significa sa un programma di setup eseguito 
come amministratore?
.m
-- 
ï¿œ corta :-)

 in fase di installazione significa sa un programma di setup eseguito come amministratore?
"Ni", nel senso che il mio obiettivo è dare all'utente di installare il programma anche senza concedere al setup i privilegi di admin. 
Ad oggi sono richiesti, ma vorrei eliminarli.
Il programma è il mio gestionale per ottici, scritto 100% in codice manage, non chiamo API o COM, quindi l'installazione dovrebbe procedere anche per utenti con bassi privilegi d'accesso al sistema.
Il problema è che non riesco a trovare una cartella che sia R\W comune a tutti gli utenti.
Nicola

 Nicola
.m
-- 
è corta :-)

 è interessante, ProgramData *è* R/W per tutti, riesci a riprodurre il problema, o ti capita solo su alcune macchine su cui non hai controllo?
Purtroppo non ho il controllo di queste macchine, nel senso che il programma è un freeware liberamente scaricabile da internet.
Noto però che un 20-30 % di utenti ha questo problema, tant'è che ho fatto una FAQ ad-hoc sul mio sito.
L'unica cosa che sono riuscito ad ottenere è stato un log da un paio di utenti un pò più smaliziati che hanno lanciato un exe da me creato che mi restituisce le seguenti informazioni.
Ti incollo il log (opportunamente oscurato con ****) di un utente con il problema su citato:
Percorso DB: C:\ProgramData\GestioneOttica\GestioneOttica.db3
Nome PC: ****
Versione OS: Microsoft Windows NT 6.0.6002 Service Pack 2
Dominio Utente: ****
Nome Utente: ****
Administrator: False
Power User: False
User: True
Guest: False
Come vedi, l'utente è "user" del proprio sistema e il db è installato sotto c:\ProgramData\GestioneOttica.
Nicola

Ecco un altro log. Diversa versione di Windows ma stessi permessi:
Percorso DB: C:\ProgramData\GestioneOttica\GestioneOttica.db3
Nome PC: ****
Versione OS: Microsoft Windows NT 6.1.7600.0


 c:\ProgramData\GestioneOttica.
Sarebbe interessante avere anche un dump dei permessi su quelle folder, 
perchï¿œ io sono in quella condizione, sono User su Windows 7 e li ho i 
permessi per scrivere, come del resto ï¿œ ovvio che sia altrimenti i vari 
programmi non potrebbero scriverci :-)


 programmi non potrebbero scriverci :-)
Purtroppo non posso accedere a quelle macchine :(
Anche qui in locale ho fatto prove con permessi di user sotto XP e 7 ma
non sono riuscito a replicare il problema.
Nicola

 non sono riuscito a replicare il problema.
è proprio questo il problema, quella cartella è per forza accessibile 
in scrittura anche all'utente proprio perchè è la folder in cui i 
programmi possono scrivere i dati comuni a tutti i profili utente.
Su quelle macchine probabilmente c'è in mezzo qualcosa (tipo un 
simpatico antivirus) che ti sta impedendo l'operazione.


 possono scrivere i dati comuni a tutti i profili utente.
ferma tutto :-) ho capito... mannaggia non è così semplice come la 
vedevo io :-)
Allora... ProgramData è configurata più o meno così (semplifico):
- Administrators: full control;
- Users: Traverse, List, Read --> Folders, Subfolders, *Files*
- Users: Create File, Write Data --> Folders, Subfolders
- Users: Create Folder, Write Data --> Folders, Subfolders
Se l'utente "Mauro" crea un file (dato che l'ultimo permesso di cui 
sopra di default lo permette viene aggiunto questo permesso 
esplicitamente sul file:
- Mauro: Write Data --> Files
Ora...se si logga l'utente Nicola non ha i permessi per scrivere su 
quel file.
Un post di un sys-admin MS dice che quella directory è per i dati 
comuni delle applicazioni che in fase di setup:
- devono creare una subfolder per loro;
- devono settare eventuali permessi su quella subfolder (e lo possono 
fare perchè il setup gira come admin);
Se tu non vuoi creare un setup, e direi che ci sta che non lo vuoi 
fare, potresti:
- crei un piccolo eseguibile il cui scopo è solo quello di settare i 
permessi che ti servono;
- al primo avvio verifichi se stai girando come admin, nel qual caso 
puoi subito lanciare il tuo eseguibile che ;
- se non stai girando come admin altro non fai che richiedere al 
sistema di far girare il tuo eseguibile come admin;
in entrambi i casi dopo il primo avvio sei abile e arruolato.


 Ciao Nocola,
perdona il typo.
forse ma forse ti conviene andare su "%public%" che su Windows 7 ï¿œ 
"c:\users\public" che di default ha molta piï¿œ libertï¿œ perchï¿œ 
praticamente sia "creator owner" che "interactive" hanno praticamente 
full control.


 full control.
Ma su XP e Vista esiste come cartella?
Nicola

 fare perchè il setup gira come admin);
Grazie mille per le preziose informazioni.
Il mio programma viene installato ed aggiornato con un setup di
InnoSetup, il quale consente di modificare permessi sulle cartelle.
Credo che un bel
[Dirs]
Name: {commonappdata}\GestioneOttica\; Permissions: everyone-modify
possa andare bene sul programma di installazione.
Grazie ancora,
Nicola

 Nicola


 Nicola


"Nicola Ottomano"  ha scritto nel messaggio 
news:4e2456ee$0$44197$4faf...@reader1.news.tin.it...
Salve a tutti,
ho necessitï¿œ di conoscere il percorso di una cartella Read-Write per 
qualsiasi utente Windows.
Nello specifico ho un programma che ha un file db a cui l'utente loggato in 
quel momento sul pc deve poter accedere in lettura e scrittura.
In fase di installazione l'utente puï¿œ scegliere una cartella personalizzata 
oppure utilizzare quella che propongo io di default.
Essendo gli utenti degli ottici, raramente sceglieranno una cartella 
personalizzata. Il 99% sceglie quella di default premento semplicemente 
"Avanti".
Avevo guardato in giro e mi era sembrato che 
Environment.SpecialFolder.CommonApplicationData fosse la cartella giusta.
Molti utenti perï¿œ mi segnalano possono accedere in sola lettura ma non in 
lettura scrittura. Questo avviene sia su Vista che su Win 7.
Qualcuno saprebbe dirmi se esiste una cartella in cui sono ragionevolmente 
sicuro che tutti gli utenti possano leggere\scrivere?
Grazie,
Nicola
-----------------------------------------------------------------------------------------------------------
Caro buon vecchio VB6, tu si che non mi tradisci mai:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=1&txtCodeId=74018
 

 io metterei full-control (o qualcosina meno) all'utente INTERACTIVE, e full-control al Creator Owner, guarda i permssi di %public% quelli sono l'ideale nella tua situazione.
A futura memoria (cosï¿œ chi si trova evita di sbatterci la testa 2 giorni):
Inno Setup consente le seguenti opzioni sui permessi:
Permissions: NOMEUTENTEWIN-readexec
Permissions: NOMEUTENTEWIN-modify
Permissions: NOMEUTENTEWIN-full
Poi ognuno puï¿œ spippolare con i singoli utenti o con Everyone o altro.
Dalla guida di Inno Setup:
full 
Grants "Full Control" permission, which is the same as modify (see below), but additionally allows the specified user/group to take ownership of the directory and change its permissions. Use sparingly; generally, modify is sufficient.
modify 
Grants "Modify" permission, which allows the specified user/group to read, execute, create, modify, and delete files in the directory and its subdirectories.
readexec 
Grants "Read & Execute" permission, which allows the specified user/group to read and execute files in the directory and its subdirectories.
Nicola