Newsgroup: it.comp.lang.visual-basic
Titolo: [VB6]Regole per scrivere programmmi per Vista

Tempo fà 2 utenti scrissero queste regole per permettere di scrivere
programmi VB6 che girano su Vista senza disattivare UAC e cose simili. Li
ripropongo per approfondirli e per imparare alcuni aspetti che non conosco:
-----------------------------------------------
 Ehehe, in realtà mi riferisco a quelle 4 regole che sono normalmente
ignorate da chi programma in modo "hobbystico", come non scrivere i .ini
nella directory Programmi, non pensare per default che la cartella
Programmi stia in C:\Programmi o che la cartella Windows sia proprio in
C:\Windows, etc. Se rispetti questi punti anche con l'UAC attivo problemi
non ne hai (+/-)
paf e' piu' bravo, ti dira' le sue. le mie:
1. l'unico vero antivirus e' la tua testa. l'unico virus serio me lo sono
preso perche' l'avevo messa in freezer 5', ed e' bastato. poi ovvio che gli
antivirus servono (e mcafee 8.5 usa da solo piu' ram di quanto ne avessero
in origine alcuni pc... non e' solo vista a succhiare risorse...).
2. scrivi programmi come admin, ma provali come normal user, se possibile in
una rete con dominio e limitazioni. (io li provo in ufficio: qui a casa non
ho ancora un dominio, ma comunque mia moglie sul suo laptop xp non e' admin,
e' user. lei non sa neanche la differenza, e io mi sento un filo piu'
tranquillo, anche se solo un filo). in genere un utente non puo' scrivere in
\programmi e \windows, a meno che l'admin non cambi i permessi sulle
cartelle. quindi anche se deve solo consultarlo, un utente ha problemi con
c:\programmi\myapp\myapp.mdb, perche' non puo' scrivere l'ldb.
3. sPercorso = "c:\windows\" e' un istruzione che di solito non funziona
fino a win2000: su nt4 e nt5 (win2k) si chiamava c:\winnt. fa' chiedere al
tuo programma come si chiamano le cartelle di sistema su quel pc. gli stessi
profili utente possono non corrispondere al login. noi avevamo
winlogin=cognome, ora e' nome.cognome: su pc che gia' andavano, la cartella
del mio utente si chiama ancora solo col mio cognome. se codifichi
"c:\documents and settings\a.p" su alcuni pc funziona, ma su altri ottieni
un errore. e cosi' via.
4. evita chiamate a ms office per fare in fretta con doc e xls: potrebbe non
esserci, o potrebbe esserci in una versione diversa che non risponde al tuo
codice. da me ho fermato gli acquisti a office 2000, ma alcune macchine
vecchie (che vanno tranquille appunto perche' non possono scasinarci) hanno
ancora office 97. le nuove facile abbiano openoffice, o domino se sara' quel
che promette. m'e' arrivato un programma (fatto da una ditta grande e
famosa) che per uno stupido report in doc m'ha obbligato a installare office
2000, come se fosse regalato. ti risparmio quello che ho pensato quando ho
visto che il doc serviva solo per intestazione e pie'pagina.
4.1. non generare xls, genera csv. non doc, ma txt/html. piu' aderisci al
minimo comun denominatore, lo standard, e meno ti complichi la vita, e meno
ti fischieranno le orecchie. se ti serve un report su carta intabellato e
colorato e con immagini, genera un html standard, qualunque pc (e anche i
mac e nx...) ha un browser.
-----------------------------------------------------------------------------------------------------------
Comincio col chiedere: qual'è la cartella da usare al posto di
c:\programmi\myapp\myapp.mdb?
Ciao
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 c:\programmi\myapp\myapp.mdb?
c:\myapp\myapp.mdb?

"kovaski0"

ringrazio per la lunga citazione.
per me, come suggerisce esquel, io continuo a metterli in root
c:\myapp\myapp.mdb
ma essenzialmente perche' non voglio fare troppi clic per trovarli.
ms mi sa preferisca
C:\Users\[utente]\AppData\Local
btw, in lan sto installando irfanview 4.20, che fa scegliere. io scelgo il 
default (program folder) proprio perche' cosi' gli users non possono 
alterare la configurazione...
un po' piu' complesso, direi, il caso in cui piu' persone devoo usare lo 
stesso db. questione molto dibattuta, non l'ho mai usata ma ho letto di 
tutto.
prova a cercare ["all users" permissions settings]
e simili.
ciao, a.

 c:\programmi\myapp\myapp.mdb?
Questo è l'elenco delle cartelle predefinite di Windows: a seconda del tipo 
di accesso desiderato al file, può essere opportuno posizionarlo in una o 
l'altra.
http://msdn.microsoft.com/en-us/library/bb762494.aspx
http://msdn.microsoft.com/en-us/library/bb762584(VS.85).aspx
Secondo me il candidato ideale per un MDB locale alla macchina potrebbe 
essere c:\users\public\myapp\myapp.mdb. In tal modo tutti gli utenti della 
macchina potranno accedere in r/w al database.
Per ottenere il percorso base (c:\users\public) puoi usare Environ("PUBLIC") 
oppure l'API SHGetKnownFolderPath, usando il parametro FOLDERID_Public, come 
spiegato in questo articolo:
http://vbnet.mvps.org/code/browse/shgetknownfolderpath.htm
Quel percorso però non esiste su versioni di windows precedenti a Vista, per 
cui devi discriminare (usando l'API GetVersionEx, es: 
http://vbnet.mvps.org/code/helpers/iswinversion.htm
).
Qualche lettura interessante:
http://www.vbforums.com/showthread.php?t=456795
http://lists.runrev.com/pipermail/use-revolution/2007-February/094217.html
http://msdn.microsoft.com/en-us/magazine/cc163486.aspx
http://technet.microsoft.com/en-us/library/cc709628.aspx
Bye
Raf 

 c:\myapp\myapp.mdb?
Sembra una dimenticanza di MS, ma è la via piu comoda
--
greg 

 greg
Una via da smanettoni :o)
Del resto, credo che tutti quelli che scrivono codice a qualsiasi livello 
abbiano, chi piů chi meno, l'animo dello smanettone.
eSQueL 

 
imho questa e' una delle scelte peggiori possibili.
vuol dire che se ho 5 applicazioni custom, mi trovo in root 5 cartelle 
diverse?
e io utente per i backup devo rincorrere tutte le cartelle che sono 
venute in mente al programmatore?
e poi chi ti dice che il disco di sistema sia il disco c?
vabbe' che a me che programmo non interessa chi dovra' poi manutenere le 
macchine, che chi vuole installare il mio software deve installare il 
computer come dico io e se non gli piace puo' andare a stendere, ma non 
vedo perche' complicare la vita a 'sti sfigati che dovranno poi gestire 
reinstallazioni, backup e manutenzione varia su queste macchine.
in piu', se in una qualsiasi azienda potenziale cliente c'e' un admin con 
un minimo di attenzione alla sicurezza, rischi che scelga un altro 
software, se ne ha la possibilita'...
le applicazioni DEVONO stare nella cartella programmi.
i dati no.
e in root, ci scrive solo il sistema operativo.
le nuove versioni di windows hanno tutte le loro brave directory, ognuna 
con la sua funzione: per una volta che bill c'ha messo qualcosa di non 
proprio inutile...
ho riletto il post prima di spedirlo e mi sembra un sacco perentorio...
;-P
forse perche' faccio il programmatore ma ho avuto qualche esperienza 
dall'altro lato, e non posso soffrire chi spantega i programmi in 
millemila cartelle complicando la vita a chi deve poi fare il backup.
:-)
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 :-)
Quoto tutto... anche il tono "perentorio" ;-)
Bye
Raf
Ciao
Raf 

Paolo opg ha scritto...

Anch'io la trovo una scelta assurda.
Se c'č una cosa a cui tengo molto in questo senso č l'ordine,
infatti nella root del mio disco
ci sono esclusivamente le cartelle di seguito elencate:
- Documents and Settings
- Inetpub
- Programmi
- WINDOWS
Disinstallo immediatamente tutti i software
che mi accorgo che fanno caos in questo senso!
Mi č capitato di dover far pulizia nei computer dei miei clienti,
e ho consigliato loro di prestare piů attenzione.
La root dei computer in questione
presentava in certi casi una mole non indifferente
di files e cartelle che contribuivano a creare esclusivamente confusione.
--
Ciao Fede
By Chicco Production
http://bcp.freetools.it


Rilassatevi :)) Io stesso ho scritto che è una via da smanettoni (risposta a 
greg).
Pace e bene :P
eSQueL 

 greg).
Ma io purtroppo l'ho visto spesso,
in computer aziendali da programmi gestionali!


 millemila cartelle complicando la vita a chi deve poi fare il backup.
Questa č una esigenza, ma potrebbe non essere l'unica.
In ogni caso io ho ho risolto tutti i problemi che pone microsoft, le varie 
versioni di windonws che non chiamano le cartelle allo stesso modo, e staro 
attento se win č inglese o italiano facendo cosi:
al primo avvio chiedo di indicare una cartella dove si vuole tenere il 
database, i suoi backup e il confi.ini del mio programma di briscola. Faccio 
subito un test per vedere se l'utente ha i diritti di scrittura e poi copio 
dentro da app.path tutto quello che č necessario. Certo se si vuole usare il 
programma con 2 utenti diversi deve mettere il database in una cartella dove 
possono scrivere tutti e due.
Ne approfitto qua per chiedere di una cosa che nn capisco.
Un utente che non cambia, installa briscola in c:\programmi\briscola e poi 
ottiene errore all'apertura del file .ldb.
Mi giura di non aver cambiato utente o diritti e mi trovo a riflettere:
a) se normal user non poteva installare, doveva essere admnin;
b) ma se č admnin come mai non scrive in c:\programmi\briscola?
-- 
Greg 

 b) ma se è admnin come mai non scrive in c:\programmi\briscola?
Stiamo parlando sempre di Vista? 

 
scrivo giusto per discutere, non per prendersela
:-)
secondo me, dipende da cosa intendi tu per smanettone.
se per smanettone intendi uno che sviluppa a tempo perso software per i 
fatti suoi, giusto per risolversi un problema ogni tanto, posso anche 
essere (quasi) della tua idea.
dopotutto, se il programma serve solo a me, sul mio pc, per risolvere 
un'esigenza mia, saranno anche un po' caxxi miei sapere dove e cosa va a 
scrivere, no?
se per smanettone intendi uno che ha imparato sul campo e sviluppa 
software per lavoro, sono di parere ben diverso: quale che sia la (triste 
;-P) via che t porta a fare lo sviluppatore, dopo che ti trovi un paio di 
volte ad avere a che fare con software scritto coi piedi, inizi a pensare 
*prima* di scrivere il codice, se non altro per non fare la figura da 
cioccolataio di quelli che programmano con le guance posteriori...
in ogni caso, non so se per fissa mia o cosa, almeno in ambito lavorativo 
evito il termine 'smanettone': mi sembra che abbia una connotazione non 
sempre positiva...


 che mi accorgo che fanno caos in questo senso!
Non sono molto daccordo; quando si disinstalla nella cartella utente 
rimangono comuenque tante cartelle con i dati, orfane dei programmi che le 
hanno create, e magari dentro ci sono files che si leggono solo con quel 
programma. E spesso dopo un poco di tempo lo stesso admin/proprietario del 
pc non sa piu che porcheria sono quei files.
-- 
Greg 

Rafunk ha scritto:

xp, mi hanno detto al telefono, ma penso che per vista sia uguale o peggio, 
no?
-- 
Greg 

 pc non sa piu che porcheria sono quei files.
Infatti dopo la disinstallazione di questi >>PROGRAMMI<<,
devo andare manualmente alla ricerca di eventuali dati scritti chissà dove
che puntualmente trovo ed elimino!



Dipende dai punti di ...Vista. Quest'ultimo infatti non causa errore se uno 
user qualunque scrive in c:\ProgramFiles\briscola, ma interviene la 
virtualization che redirige altrove l'operazione (in una cartella 
particolare: 
C:\Users\<USERNAME>\AppData\Local\VirtualStore\ProgramFiles\briscola).
Ma in XP ciò che racconti è curioso...
Che errore riscontra, di preciso?
E poi: cosa hai usato per creare il setup del programma?
Ciao
Raf 


Ma no che è simpatico. Lo smanettone è uno che c'ha manico ma che a volte 
(anche troppe) non sta a guardà er capello :DD
http://www.smanettoni-forum.net/ipb/uploads/post-by-20-1220545634.jpg
Ciauz
eSQueL 

 e simili.
Ma contemporaneamente dici?


 Ma contemporaneamente dici?
si'. ma prima pensa attentamente a tutti i pro e i contro. d'altra parte, su 
uno stesso pc windows, va bene il multiuser-multitasking, ma 
*contemporaneamente*. quanti utenti possono accedere a un oggetto?
ciao, a.

 programmi che vanno non si sa dove.
Andrea io faccio programmi che funzionano in modalit� stand-alone. Niente
server niente dominio niente di niente.
Ma vorrei non avere problemi con vista. Io installo il prog nella cartella
programmi e purtroppo visto che non sono un bravo programmatore installo in
db (dove leggo e scrivo) nella cartella c:\programmi\myapp\db. Ecco questo
con vista, ma pure con gli altri SO lo vorrei evitare. Quindi il programma
lo installo in C:\programmi\myapp. Ma il database non ho ancora capito dove
installarlo. E mi piacerebbe che funzionasse indipendentemente dall'utente.


 installarlo. E mi piacerebbe che funzionasse indipendentemente dall'utente.
Se il db serve per tenere informazioni operative (parametri utente, 
parametri di sistema, log delle attività, ecc...), puoi benissimo 
metterlo in %Programs/myapp.
Se invece parliamo del database coi dati, sicuramente va offerto a chi 
installa la scelta di dove posizionare la cartella coi dati. Quasi 
tutti hanno un disco, o un'area del server, dove vengono messe le 
informazioni da tenere sotto backup, magari con un array raid, ecc...
Se poi uno magari passa a dbms server, anzichè su file...
Ciao
Alberto
-- 
Il tempo e la pazienza possono più della forza o della rabbia

 Il tempo e la pazienza possono pi� della forza o della rabbia


 un posto sicuro, che vada bene a Vista e al suo UAC.
Devi dare la scelta su dove metterli.
Mica puoi pensare che uno faccia il backup di una cartella di 
%Programs, o in ambiente Terminal Server (che oramai è lo standard per 
molte aziende) che tutti gli utenti vadano a scrivere su %Programs, 
area oltretutto che molti amministratori bloccano in scrittura agli 
utenti.
Poi, ovvio che uno può tarare le cose sulla base di ciò che deve fare, 
ma io per principio faccio anche le ciappinate come se fossero cose 
importanti, così non perdo le buone abitudini.
E sicuramente un db di dati in %Programs a casa mia non si vede.
Ciao
Alberto
-- 
L'economia sa tutto di te e tu non sai niente dell'economia. La tua 
banca sa tutto di te, di quanti soldi hai, e quando li spendi; ma tu 
non sai niente di cosa fa la banca dei tuoi soldi e dove li mette, e se 
ce li ha!

 importanti, cosï¿œ non perdo le buone abitudini.
ottima cosa. devo imparare.

 Raf
Adesso non ricordo bene con esattezza, ma l'errore era qullo classico della 
mancanza dei diritti, ed il setup era quello di vb6
--
grg 

 Devi dare la scelta su dove metterli.
questo pero' anche in ms non lo fanno sempre. inetpub a parte, mi ritrovo, 
senza aver potuto scegliere,
C:\MSOCache
C:\PerfLogs

 dall'utente.
se lo metti in c:\myapp\my.mdb dovrebbe essere scrivibile da tutti. ma 
anch'io non amo la proliferazione delle cartelle in root, sebbene oltre a ms 
la perseguano molte aziende famose, specie in italia.
l'ho fatto in un 2000 in cui lavorano, a turno, in tre, che si vogliono 
poter passare i doc.
gli ho spiegato che la cartella documenti che un utente ha sul desktop la 
vedono solo lui e gli admin, quindi gli ho creato c:\docs e gli ho detto di 
metterli li'. sembra che se la cavino.
in modo simile, per i dot, in lan creo di solito \doc&settings\modelli\ e la 
rendo scrivibile a tutti (i modelli workgroup sono sul server in sola 
lettura).
e' la cosa piu' ovvia e immediata, per quello ci ricorrono in tanti. ma non 
e' affatto una bella cosa.
paolo: "e io utente per i backup devo rincorrere tutte le cartelle che sono
venute in mente al programmatore?"
e' vero anche il contrario. io admin mi trovo a rincorrere doc e mdb messi 
in root o nella cartella dei modelli, o dovunque, a caso. ovvero copiando di 
corsa la cartella \doc&settings\utente\, mi sono trovato ad aspettare ore 
perche' c'erano ennemila cookies e cache inutili. e magari a non riuscire 
piu' ad arrivare ad alcuni file (salvo capriole) perche' il path+name 
portato altrove diventava troppo lungo. (\documents and settings > \users, 
vuol dire che ci hanno messo 15 anni, ma l'hanno capito anche loro. beati 
gli /usr...).
il backup dei dati e' sempre un casino. li avviso sempre che all'emergenza 
cerco di copiare documenti, desktop, modelli e (se ho il tempo) preferiti. 
ma tanto continuano a mettere le cose dove capita, e ad allegare in mail il 
link sul desktop invece del doc in documenti (e mica solo i miei utenti)...
ora ognuno di loro ha una cartella personale sul dfs. gli dico di copiarci 
loro quello che credono meglio, che in caso di casini io non rispondo dei 
dati sui singoli pc. e faccio molto prima.
kovaski, vista io ancora non l'ho capito del tutto, il mese scorso 
(abbondantemente dopo sp1) ha ricominciato a metterci ore per copiare un 
file uno, poi si e' rimesso normale, cosi', di testa sua. ogni tanto ha 
scherzetti simili. quindi faccio fatica a dirti con certezza.
oggi se trovo il tempo provo a mettere un mdb nella cartella comune e a 
entrare con un login a permessi bassi, senza e con uac. se riesco, ti dico.
ciao, a.

 della mancanza dei diritti, ed il setup era quello di vb6
Fagli provare a cancellare l'ldb (a programma chiuso) usando explorer... 
dovrebbe dare lo stesso errore. 

 dovrebbe dare lo stesso errore.
l'ldb sicuro non c'era perchè si bloccava al primo avvio.
Ma sicuro la prox volta proverò a fargli creare-cancellare un file. Buona 
idea.
--
greg 

 ha
scritto:

Bene si fammi sapere.......


 ciao, a.
Interessa molto pure a me che conosco vista poco o nulla.
In ogni caso, credo che tutti abbiamo ragione. E il motivo � che bisogna 
distinguere tra pc e pc.
Non si pu� pretendere-obbligare che l'utente singolo da casa/negozio debba 
per forsa avere tutte le regole di sicurezza di un pc di una grande lan, e 
ma neanche il contrario.
Il risultato poi alla fine mi pare che sia quello di complicare la vita 
all'utente medio, al programmatore e all'admin della lan. Perch� poi ste 
menate a che servono? A tenere lontano virus, trojan, haker dalla cartella 
c:\programmi? Ho qualche dubbio; mi sa che poi chi vuole entra e scrive 
quello che che vuole, tranne il mio programma che vorrebbe scrivere 
sull'.ldb :(
greg 

 sull'.ldb :(
Infatti come sempre � successo e succeder� (purtroppo)!
E' una guerra persa in partenza...
...fatta la legge trovato l'inganno!


 sull'.ldb :(
parliamone.
quando c'e' stato stinger, so che varie aziende qui intorno hanno
avuto il 100% dei pc incasinato.
qui fra permessi e policies se ne sono incasinati 2 su 70-75, e solo
perche' dei programmi scritti coi piedi da aziende italiane ci avevano
costretti a rendere admin locali gli utenti di quei due pc.
hai una vaga idea, quando passo di persona sui pc, di quanti
spaccotutto.exe trovo in esecuzione automatica e js e activex bastardi
in cache? e mi chiamano abbastanza spesso per dire "l'antivirus mi fa
vedere un insetto che si contorce, cosa devo fare?" "mi sembra ovvio:
scendere nella chiesa qui di fianco e accendere un cero".
credi che nel mondo n*x ci siano regole piu' morbide?
seguendo il tuo ragionamento, potresti entrare in autostrada
contromano, tanto ultimamente la gente guida sempre piu' da schifo...
vabbe'. ho creato in vista ultimate una cartella c:\provamdb e ci ho
messo dentro un mdb di access 2000.
sono entrato col login di uno dei miei utenti lan e, non avendo su
vista nessun vb, l'ho aperto con access. si e' aperto e ci ho
copincollato tranquillamente, nonostante i permessi per gli utenti
normali nelle proprieta' risultassero solo lettura/esecuzione e, per
la cartella, visualizza contenuto.
quindi, a naso, dovrebbe andare.
(nb: uac io l'ho come al solito disabilitato. pf non sperare che ci
torni a mettere mano :)
ma il consiglio di alberto mi sembra saggio. fare sempre le cose come
si deve costa di piu' le prime volte, ma serve di piu', e, btw, in
caso di casini e' probabile che ti salvi le piume: *tu* eri a posto,
gli altri non si sa. vedi tu.
ciao, a.
ah, si', riguardavo in questi giorni: qui abbiamo parecchi repertori
su cd (ma da installare), di editori anche famosi. perche' diavolo mi
ritrovo
c:\xyz
c:\xzy
c:\zxy
...?
ognuno di loro si installa in root. prova a usarne un centinaio, poi
devi pure pregare che la tua cartella c:\briscola non sia gia'
prenotata...