Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Accesso ai registry e Windows XP.

Ciao a tutti!
Qualche anno fa ho creato un'applicazione VB6 che scrive le proprie
impostazioni nel registro di sistema nella chiave
HKEY_LOCAL_MACHINE\SOFTWARE\EstebanSoftware\ESDayLight.
Fino a che i nostri clienti usavano Windows NT, qualsiasi utente con
qualsiasi tipo di privilegio (users, power users, administrators) che
lanciava l'applicazione, l'applicazione poteva leggere/scrivere i propri
parametri nella chiave.
Ora che molti nuovi clienti hanno installato Windows XP, l'applicazione, se
lanciata da un utente con diritti 'Users', riesce a leggere nella chiave ma
non ad aggiornare (scrivere) le impostazioni nel registro. E per di più, ho
scoperto che tale utente non può neppure modificare un eventuale file di
testo che si trovi nella cartella C:\Programmi da usare al posto del
registro!
Esiste qualche API che possa permettere al mio programma di scrivere nel
registro usando un utente amministratore?
Cioè, come posso fare in modo che la mia applicazione acceda al registro con
privilegi da amministratore?
Grazie!
Esteban


Non sarebbe piů facile cambiare i permessi sulle macchine win??
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Non sarebbe più facile cambiare i permessi sulle macchine win??
Non sarebbe più facile non usare mai (MAI!) il registro per gli applicativi?

 non ad aggiornare (scrivere) le impostazioni nel registro.
In realtà anche NT e 2000 fanno questo, NT forse non di default.
Comunque se un utente non è amministratore, proprio per questo *non*
dovrebbe nemmeno avere la possibilità di toccare il sistema e quindi di
installare/rimuovere applicazioni.
Questa operazione dev'essere fatta dall'amministratore.
E' una pratica piuttosto stupida e ignorante quella di lasciare a utenti che
dovrebbero avere il controllo della macchina dei permessi limitati, cosa
che, secondo me, andrebbe fatta solo con personale di tipo non tecnico
(segretarie/commerciali/dirigenti).
Tutti gli altri, se la politica aziendale è quella di avere utenti di serie
A e di serie B, chiamano l'administrator e si fanno installare la tua
applicazione.
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net


Dipende. Fondamentalmente no (infatti .NET non usa il registry).
Però il registry con le sue ACL sui singoli nodi permette di proteggere
parte dei parametri di configurazione. Vero che la stessa cosa
si può fare mettendo le cose su file diversi. Però ci sono
casistiche che impongono di non rendere direttamente accesibili
agli utenti i parametri di configurazione.
Saluti.
--
Saluti e salute a tutti.
________________
Gabriele Del Giovine [Microsoft MVP] - Windows 2000 - Windows NT 4.0
- Le informazioni fornite in questo messaggio sono fornite
  senza vincolo di garanzia e senza responsabilità alcuna

 ha scritto nel messaggio
news:bqa00q$1vv8it$1...@ID-174464.news.uni-berlin.de...

E che alternativa proporresti?
Esteban

[*Esteban* = 
esteban_NONSP...@email.it
 in
news:bqa9ju$htg$
1...@lacerta.tiscalinet.it
] ha scritto:

File di ogni genere (INI, TXT, Random), database, qualsiasi cosa atta a
registrare in modo permanente, mai il registro.
Quello lasciamolo al sistema, se non glielo incasiniamo con 8000 cose
aggiuntive, ce ne sarà grato.

 ha scritto nel messaggio
news:bqaa6n$20h9pb$1...@ID-174464.news.uni-berlin.de...

Allora il problema è: dove salvare il file?
Esteban

 Allora il problema è: dove salvare il file?
Dove ne hai voglia, magari (sempre per non disordinare il tutto, per esempio
per non "sporcare" la Windows o la System) in una tua cartella che crei in
fase di prima installazione.
Ora la domanda sarà "su quale disco?". Su C:. E se non c'è C: cerchi il
primo disponibile...
Proteggere le informazioni per non facilitarne troppo le modifiche
indesiderate?
Basta camuffarle un po', magari con un numero di controllo che ne valida la
coerenza...
Si scassano? E' colpa (o sfiga) dell'utente. Punto.

 Si scassano? E' colpa (o sfiga) dell'utente. Punto.
Il problema non è di sicurezza. Devo solo registrare un numero.
Il fatto è che questo numero deve essere in comune con tutti gli utenti che
possono accedere alla macchina, quindi non va bene creare il file nella
cartella %HOMEPATH%\nome_utente, e in Windows XP l'utente appartenente al
gruppo Users non può assolutamente scrivere in %HOMEDRIVE%, %ProgramFiles%,
%SystemRoot%, in pratica non può scrivere nulla in una cartella che non sia
la sua cartella in %HOMEPATH%.
Ecco, allora, partendo dal presupposto che esistono utenti di tipo Users che
hanno necessità di utilizzare il mio programma e che il mio programma ha
necessità di memorizzare un'informazione e che tale informazione deve poter
essere visibile/aggiornabile da qualsiasi altro utente, a parte usare un
database per memorizzare un numero (1 bit per l'esattezza), che altra
soluzione c'è?
Eventualmente, che tu sappia, non c'è una chiave dei registry che possa
essere accessibile in lettura/scrittura da qualsiasi utente? D'altra parte,
il registro di sistema non ha sostituito i vari file .ini?
Grazie!
Esteban

 il registro di sistema non ha sostituito i vari file .ini?
Il registro poichè ognuno si è sentito in diritto di riempirlo con le
immondizie più varie è stato ritenuto inadeguato (e la stessa Microsoft
consigliava un limite di non più di 2k per applicazione di dati salvati)
anche perchè rende il sistema instabile.
Ora si è tornati alla teoria dei file .ini, che sono sostituiti dai più
flessibili xml, anche se i file ini per molte cose offrono un vantaggio
semplicità/utilità maggionre.


 E' tanto facile.
E' facile, ma l'utente appartenente al gruppo Users non può scrivere nulla
nella cartella delle applicazioni.
Certo, potrei installare il programma, anziché nella cartella
C:\Programmi\NomeProgramma direttamente nella Root (C:\NomeProgramma), ma
penso che sia ancora più schifoso che non scrivere nel registro di sistema.
Potrei anche dare i diritti di scrittura nella cartella
c:\Programmi\NomeProgramma al gruppo utenti Users, ma a questo punto io
vorrei sapere quali soluzioni ha trovato chi ha avuto a che fare con questo
problema.
Esteban

 nulla nella cartella delle applicazioni.
E dove può scrivere? Da nessuna parte? Io mi fermo...


Su XP e 2003 gli utenti normali (gruppo locale Users) non possono scrivere
in Programmi.
Saluti.

[*Gabriele Del Giovine [MVP]* = gabriele_@_
delgiovine.it
 in
news:bqce89$10ua$
1...@newsreader2.mclink.it
] ha scritto:

Ok, si scriva da un'altra parte. Non si può? Ripeto, mi fermo...

Ricordando che in WinXp non si può scrivere liberamente in tutte le
cartelle, tantomeno in quella della nostra applicazione...
Le soluzioni sono 2: 
1) se voglio scrivere nel registro senza aver problemi di permessi
utilizzo le funzioni del vb savesettings e getsettings: queste
scrivono nel registro
nella posizione HKEY_CURRENT_USER\Software\VB and VBA Program
Settings\MyProgram.
Il primo beneficio è che ogni utente avrà le sue impostazioni e non ci
sono problemi di permessi.
2) Se voglio usare un file ini o xml o quel che sia rispettando le
specifiche di windows devo seguire queste regole:
a) Le impostazioni comuni a tutti gli utenti dovrò scriverle in un
posto accessibile a tutti: nel nostro caso andrà bene c:\documents and
settings\all user\dati applicazioni\myprogram
b) Le impostazioni personalizzate per l'utente le scriverò in
c:\documents and settings\USER\dati applicazioni\myprogram
Queste regole vanno applicate anche nel caso in cui devo creare dei
file temporanei:
c:\documents and settings\USER\Impostazioni Locali\Temp\
Ricordo inoltre che se la nostra applicazione crea dei file (ad
esempio dei database) questi andranno messi per regola (... dando la
possibilità di cambiare la regola se uno ha i permessi...) nella
cartella c:\documents and settings\USER\Documenti\
Rimane ora il problema di come ottenere queste cartelle...
Questa è la funzione che mi ero smazzato anni fa SHGetFolderPath e
questa è invece la pappa pronta
http://www.mvps.org/vbnet/index.html?code/shell/desktoplink.htm
Ciao 
Marco Rodriquez





(Ho sbagliato a linkare nel post precedente!)
http://www.mvps.org/vbnet/code/browse/csidl.htm
Ciao 
Marco Rodriquez

 cartella c:\documents and settings\USER\Documenti\
Con diritti limitati, è una regola o un obbligo?
E se più USERs devono accedere agli stessi dati?

 ha scritto nel messaggio
news:bqhrrc$232fch$1...@ID-174464.news.uni-berlin.de...
