Newsgroup: it.comp.lang.visual-basic
Titolo: scrivere su disco....come? win7

Situazione semplice:
programmino in vb che scrive su disco.
Il programmino parte in avvio tramite chiave di registro.
Quando va a scrivere su disco viene presentata un'eccezione: non si hanno le 
autorizzazioni.
Devo chiudere il programma,riavviarlo con il tasto destro( esegui come 
amminstratore), allora tutto funziona.
Come risolvo>?
Grazie
windows form, 
vb.net

 Come risolvo>?
scrivendo in un posto dove puoi scrivere?
.m
-- 
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com
blog @ 
http://milestone.topics.it
whynot [ at ] topics [ dot ] it

 Come risolvo>?
scrivendo in un posto dove puoi scrivere?
Cioï¿œ? come faccio a sapere dove posso scrivere? Attualmente il programma ï¿œ 
in c:\directorydelprogramma che contiene sia il file che voglio 
sovrascrivere che l'exe.
Devo per forza utilizzare la cartella programmi?
Grazie

 voglio sovrascrivere che l'exe.
Ah neanche li scrive? Siamo a posto!
Forse � meglio dimenticarsi che esiste il disco c:\
-- 
Greg 


No. Basta documentarsi.
Dapprima si poteva scrivere ovunque.
Poi dovunque ma da qualche parte no.
Ora non � tutto bloccato meno alcune parti.
Ed � meglio cos�.
-- 
-> GbC|
www.gbcdepot.com
www.chiappori.com
 

 wrote in news:4cdd4d9a$0$30903$5fc30a8
@
news.tiscali.it
:

+1
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 Devo per forza utilizzare la cartella programmi?
Per scrivere? Non sia mai :-)


 Ed è meglio così.
+1 :-)


 
secondo me quello che frega e' la traduzione imo infelice di 'program 
files'.
io (e vedendo i vincoli che impone penso anche mamma ms) intendo 'program 
files' come 'files dei programmi' e non 'eseguibili, dll e files di 
lavoro che i miei programmi leggono e scrivono durante le operazioni'.
program files = eseguibili piu' librerie di supporto al programma.
al massimo ci potrei mettere quei files di configurazione che l'utente 
non modifica.
i files di lavoro imo vanno nella directory utente, dove l'utente puo' 
giustamente fare un po' quel cavolo che gli pare.
nella directory che contiene gli eseguibili ci scrivono gli admin, al 
massimo gli utenti di sistema e basta.


 sovrascrivere che l'exe.
Ci sono posti canonici in cui l'utente puï¿œ scrivere, che cosa devi
scrivere?
Il programma si scrive un file xml k usa come DB.
Ora, se l'utente ha scelto d installare/ mettere il programma in una 
cartella di c:\ il programma darï¿œ errore??
Sono d'accordo k andrebbe usata la cartella dei programmi, ma se l'utente se 
lo installa da qlk altra parte?

 lo installa da qlk altra parte?
ci sono tanti posti dove puoi scrivere, se quello che scrivi deve 
essere condiviso tra gli utenti della macchina il profilo "All Users" ï¿œ 
il posto ideale, altrimenti nel profilo dell'utente corrente. Crei una 
folder dentro "Application Data" per la tua applicazione e li ci metti 
quello che preferisci.
.m


 se lo installa da qlk altra parte?
ci sono tanti posti dove puoi scrivere, se quello che scrivi deve
essere condiviso tra gli utenti della macchina il profilo "All Users" ï¿œ
il posto ideale, altrimenti nel profilo dell'utente corrente. Crei una
folder dentro "Application Data" per la tua applicazione e li ci metti
quello che preferisci.
.m
CUT
quindi se l'utente installa il programma in c:\ mi confermi che il programma 
non puï¿œ scrivere nella sua propria cartella?

 non può scrivere nella sua propria cartella?
è irrilevante dove l'utente installa il programma, non ha senso che tu 
ti faccia un sacco di special case sulla base del path, scrivi in un 
posto dove sei sicuro di poter scrivere e chi si è visto si è visto.


 programma non può scrivere nella sua propria cartella?
è irrilevante dove l'utente installa il programma, non ha senso che tu
ti faccia un sacco di special case sulla base del path, scrivi in un
posto dove sei sicuro di poter scrivere e chi si è visto si è visto.
ok! Esistono delle funzioni già fatte per avere questi path speciali?
Grazie :) 

 ok! Esistono delle funzioni già fatte per avere questi path speciali?
yes, Environment.GetFolderPath( Environment.SpecialFolder... )


 posto dove sei sicuro di poter scrivere e chi si è visto si è visto.
Quindi AllUserProfile\Dati Applicazioni\MyProg\
potrebbe andare bene sempre soprattutto quando si vuole tenere tutto in una 
sola cartella?
-- 
Greg 

 sola cartella?
certo, tipicamente ci si metti anche la versione, in modo da poter 
gestire gli eventuali upgrade
AllUserProfile\Dati Applicazioni\MyProg\v1.0\



Provato e va bene almeno su XP, devo provare anche su W7 ma immagino vada 
bene pure li, dal momento che Innosetup traduce la costante "commonappdata" 
nella cartella Userprofile\Dati Aplciazioni\  appropriata in base al sistema 
operativo corrente.
Unica controindicazione che mi pare di trovare è che si tratta di una 
cartella nascosta, quindi alla fine una cartella un po particolare.
--
greg

 cartella nascosta, quindi alla fine una cartella un po particolare.
E ti lamenti?
Io renderei il 99% del disco inaccessibile agli utenti.
Tanto serve loro solo per fare cose che non sanno, quindi casini.
E negli utenti metto anche i programmatori fai-da-te che credono che 
basti avere un compilatore e conoscere due istruzioni per scrivere un 
programma.


 avere un compilatore e conoscere due istruzioni per scrivere un programma.
amen :-)


 avere un compilatore e conoscere due istruzioni per scrivere un programma.
Mi par di cogliere un velo di ostilità verso il programmatore-fai-da-te 
(quale io umilmente sono) e non ne capisco il motivo, ma forse mi sbaglio :)
--
greg 


No, nessuna ostilità.
Più che altro di competenze.


 (quale io umilmente sono) e non ne capisco il motivo, ma forse mi sbaglio :)
eh eh eh....beh anche io sono un programmatore fai-da-te...e molti
altri sul ng...
Obbiettivamente si fà una maggiore difficoltà a capire i concetti
generali rispetto ad un laureato!(La tupla per lui è un termine
comune ....per me era fino a poco tempo fà uno strano animale
caucasico...facevo le solite cose del laureato ma non chiamavo "tupla"
la .."tupla"!)
Il laureato però vive in un mondo onirico che la scuola italiano
costruisce mille anni luce distante dal reale ambiente lavorativo!
Sintesi: che tu sia laureato o no...."te tocca da studià"!!!
Che tu non sapessi dell'esistenza dei profili utente e degli "special
folders" denota una tua mancanza: Non hai mai preso un libro e
cominciato dalle fondamenta per arrivare al tetto ed alla pittura
della facciata!
Ergo....zio Gibbì ha ragione! Non contesta gli studi....ma la scarsa
voglia di documentarsi!...e quindi anche di studiare!
Non venirmi a dire che non hai 40 euro per comprarti questo:
http://books.aspitalia.com/VisualBasic-2010/
Se non li hai....beh mi dispiace....
il tuo target non è windows allora ...ma linux!
Non vb.NET ma Ruby...o Python...!
E non stò disprezzando eh!...anzi!

 E non stò disprezzando eh!...anzi!
Ciao Wodkino :)
Mi sa che oramai siamo i nonni qua dentro...
Comunque...
Non è che sta roba qua richieda minori competenze. Anzi...
Fai-da-te è qualsiasi individuo si metta a fare una cosa senza averne 
una base di conoscenza -almeno- teorica. Ah la competenza si fa strada 
facendo? No, da che mondo è mondo prima si comprende come si fa e poi si 
fa, non il contrario.
Temo che questo valga per tutte le cose, non solo per la programmazione.
Un idraulico incompetente potrebbe fare un cesso che non scarica, un 
ingegnere costruire una automobile senza le porte, un politico mandare 
bellamente in vacca l'economia di un paese...
Con l'informatica danni seri (da penale) non se ne possono fare, quindi 
la categoria degli incompetenti è molto ben rappresentata, visto il 
basso livello di rischio e l'incompetenza, ancora maggiore, di chi 
usufruisce dei servizi.
Presenti esclusi, ovviamente :D


 E non stň disprezzando eh!...anzi!
Non sono i 40 euro. Io non ho seguito l'evoluzione dopo il vb6 e non ho 
seguito neanche ADO da momento che usavo solo db Access, mi sembrava 
migliore DAO. Ancora l'anno scorso ho comprato su ebay i primi numeri di 
Visual basic Journal che mi mancavano. Poi dopo VB6 non ho piu condiviso e 
ho smesso di studiare. Ho fatto altro. Che male c'č? Tu stesso ci hai messo 
un bel pň a passare al net e tutto il resto.
Zio Gibbi lo connosco da 10 anni, e so che č molto competente
-- 
Greg 

 bellamente in vacca l'economia di un paese...
Cavoli e io che pensavo che i nostri politici fossero dei mega 
competenti... :-P
Secondo me è tutta colpa nostra che siamo di sinistra.... ahahaha :-)



Dici che sono discorsi sinistri?
So mia mi... (dialetto veneto)


 So mia mi... (dialetto veneto)
dalle mie parti: so mia me (bergamasco)



<bersani mode="off">
...mmmmm....sapevo che la mia diffidenza verso i MVP aveva un
senso !!!...ora ho capito quale!
eh eh eh !!!
</bersani>

 Non che sta roba qua richieda minori competenze. Anzi...
si MA,  mediamente, la documentazione che trovi GRATIS con linux è
maggiore che con windows. Che sia della MEDESIMA qualità si può
obbiettare! Ma il dato è che se vuoi programmare a costo prossimo alla
zero (tranne il tempo che ci spendi ovvio ...che non ha prezzo!) NON
ti deviindirizzare a windows ma a linux....che poi è ANCHE più prodigo
di possibilità: trovi tutti i linguaggi della terra anche i più
strani!
Comunque io mi sto sempre più convincendo che ho scazzato tutto (da un
punto di vista lavorativo) a non buttarmi su java!...ma è un altro
discorso!
Saluti.....
p.s.
Un meeting invernale???
...nella nebbiosa "gbc-land" ???(io vado pazzo per il bollito!!!...con
la lingua eh!)
segno sul calendario per Gen/Feb 2011???

 
Quasi quasi... :-)
Nicola


Ma anche nella bisteccosa Toscana direi, no?
Su Java concordo e mi ci sto dedicando sempre di più.
Comunque la documentazione esiste e la sua disponibilità c'è.
L'incompetenza è uno stato mentale, l'approccio di chi "je manca sempre 
'na lira pe' fa 'n mijone", il mondo di chi pensa di sapere abbastanza 
per fare, di chi risolve inserendo una dll nell'installer e copiandola 
nella system32 forzando la sovrascrittura "perché altrimenti il mio 
programma non funziona", di chi aspetta un secondo con un ciclo 
for-next, di chi scrive App.Path & "\" & NomeDelFile.
Basta va altrimenti do troppi consigli :D


 ok! Esistono delle funzioni giï¿œ fatte per avere questi path speciali?
yes, Environment.GetFolderPath( Environment.SpecialFolder... )
Mauro, ancora un dubbio:
l'utente installa in c:\prg il programma.
Questo programma ha la funzionalitï¿œ di aggiornamento: scarica un file e lo 
sostituisce con quello presente.
Se non puï¿œ scrivere nella cartella, il programma non potrï¿œ aggiornarsi, 
sbaglio?
Sono d'accordo che all'utente va negata la possibilitï¿œ di scrivere ovunque 
nel disco, ma sinceramente mi sembra una stupidaggine che il programma non 
possa operare nella propria cartella di lavoro....

 di chi scrive App.Path&  "\"&  NomeDelFile.
mi sa che sono incompetente ma questa non l'ho capita ...
ciao
Mauro

Innuendo <a@b.c> wrote in news:4ce50123$0$12805
$
4faf...@reader5.news.tin.it
:

forse suggeriva di usare qualcosa del tipo:
my.Computer.FileSystem.CombinePath(App.Path, NomeDelFile)
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 possa operare nella propria cartella di lavoro....
l'utente non deve poter fare nulla di potenzialmente dannoso, da quando 
mia madre ha 7 senza UAC (quindi è un semplicissimo User) io vivo 
semplicemente felicissimo, ho drasticamente ridotto a zero gli 
interventi.


> mi sa che sono incompetente ma questa non l'ho capita ...
[snip]
Bocciati entrambi.
App.Path riporta il percorso dove è stato lanciato l'eseguibile.
Se ci si trova in un percorso contenuto (subdirectory) alla fine omette 
il backslash, se si è nella root invece il backslash lo mette. Quindi 
nella root sarebbe c:\ mentre altrove c:\pippo
Nel primo caso l'inserimento dell '\' genera un errore.
La faccenda si risolve gestendo una variabile all'avvio del programma... 
Una roba del tipo
perc = app.path
if right(perc,1) <> "\" then perc = perc & "\"
perché l'incompetente (!) che installa o esegue dalla root (non solo del 
disco di sistema, ma anche di una chiavetta o di un CD) lo si trova 
sempre.
Volendo fare le cose ammodino banalità come questa si dovrebbero 
gestire.


 wrote in
news:4ce55040$0$30907$
5fc...@news.tiscali.it
: 

partendo dalla bocciatura della concatenazione, argomenti sostenendo che 
la concatenazione e' la soluzione...
hum...
poche idee ma ben confuse?
usa il framework e non l'accrocchio concatenante:
my.Computer.FileSystem.CombinePath(App.Path, NomeDelFile)
e vedrai che i vari slash, backslash e path assortiti vengono digeriti 
automagicamente.


 wrote innews:4ce55040$0$30907$
5fc...@news.tiscali.it
:
beeep
beeeeeeppppp
Va che se cerchi di riprendere zioGibbì ti scorni di brutto!
Lui parla di melanzane...tu di bulloni !
GbC è orgogliosamente fermo a vb5....ed è agli annali del NG una sua
vecchia polemica con un MVP che risolveva i suoi problemi
consigliandoli di comprare VB6!!!
ORA
in vb5/vb6 HAI quel problema che ti dice il caro vecchio GbC
Il geriatrico GbC poi ha un altra qualità : bada al sodo! Gli "mporta
sega" di fare programmazione stilisticamente corretta (sta a Verona ma
è un romano che ce voi fà!!!)
Tempo addietro(anni fà) mi passò il suo codice per interfacciare
l'oggetto printer e farsi da soli etichette report e quant'altro: un
incubo di variabili a$ b$ c$ e così via!
Ma faceva bene il suo lavoro...parecchio bene!(credo che il codice sia
ancora online sul suo sito web)
Quindi occhio a riprendere zio Gibbì....prima sìi certo di essere sul
solito pianeta...e di parlare la solita lingua!
Saluti!

 interventi.
Povera mamma....
condannata dal figlio a non poter partecipare alle Poker World Series
se non chiedendogli di installare il sw!!!
...legge del contrappasso???
eh eh eh!
;o)

 
ops!
io ero rimasto all'op, che parlava esplicitamente di 
vb.net
 ^^


 che la concatenazione e' la soluzione...
[snip]
Io non argomento nulla. Non convinco, non propongo regole e/o soluzioni, 
non dico di fare o non fare in un modo piuttosto che in un altro.
Si parlava di incompetenza ed ho detto che ho dei criteri personali (non 
oggettivi ed universali ma personali) per valutare la competenza. Non ti 
piacciono? Non è un mio problema.
Mi riferivo alla logica da utilizzare (il codice è VB6) non 
all'istruzione tirata in ballo.
-- 
-> GbC|

 Saluti!
Basta VB... i sono rotto. Sono passato ad altri lidi anche io.
Comunque č vero che per alcune cose VB5 č meglio di qualsiasi altra 
versione esistente.
Qual codice di stampa risale a Vb3 e lo realizzai in fretta e furia nel 
'96. Tanto per dare una idea č in una serie di programmi distribuiti 
(ancora) sul territorio nazionale (ce n'č in giro circa 8.000) e non ho 
notizia di utenti fermi a causa di problemi con il programma.
La stessa routine, praticamente riscritta, la uso ancora.


 ;o)
esatto :-D


 
dato che l'op e' partito con 
vb.net
 era abbastanza lecito aspettarsi 
codice e ragionamenti per 
vb.net
 salvo diversa indicazione.
visto che scrivi solo ora che il tuo codice era da interpretare come 
pensato per vb6, prendo atto della tua dimenticanza.


Paolo opg wrote:
[snip]
Non ti sei dimenticato qualche cosa?



...beh s'è scordato di mandarti a fanculo!
T'è andata bene!...a me mi ci mandano!... a te no!!!
Che ci voi fà...sò giovani! C'hanno il "sangre caliente"...credono che
il mondo sia loro!
Ritiriamoci sulla panchina a ragionare di fiche e di programmi che
sono "secoli informatici" che girano senza nessuna telefonata da parte
del cliente se non per farci gli auguri di Natale!...facciamo come il
cinese in riva al fiume!!!
Ma lasciali bollire nel loro brodo! ...sìì zen: il
vuoto......  !!!   !!      !    .

 
chapeau


 pensato per vb6, prendo atto della tua dimenticanza.
Beh caro il mio "saccente" amico....allora se siamo sul piano
micragnino della "competenza per competenza"....io prendo atto della
"imprecisione" di GbC e della tua "ignoranza grave" E di Vb6 E di
Vb.net !!!
Perchè?
Perchè l'istruzione di esempio tacciata di maldestramente imprecisa
citata da GbC
(cito)
App.Path & "\" & NomeDelFile.
NON ...RIPETO NON puoi essere confusa in merito all'individuazione del
linguaggio con cui è scritta!
Lo dico perchè ho fatto una semplice prova (casomai la mia senilità di
47enne mi facesse ricordare male!)...ho aperto vs2010...con i
namespace di default....
App.Path & "\" & NomeDelFile NON LO POTRESTI COMPILARE!!!
per il semplice motico che App non esiste in 
vb.net
!!!
Quindi calmiamoci tutti e ripartiamo da capo!
GbC voleva fornire alcuni esempi di scarsa competenza e forniva ESEMPI
VARI di scarsa "oculatezza" informatica.
Opg voleva far vedere che aveva capito e TRADUCEVA l'esempio di vb
3/4/5/6 in equivalente VB.net.
Siamo ecumenicamente tutti d'accordo e reciprocamente competenti ora?
Via non fatemi fare il democristiano!!!!!!!
eh eh eh
:o)

 Ritiriamoci sulla panchina a ragionare di fiche
posso venire anche io? di programmi non me ne importa sega :-)



se pò fà!!!
ti riconosci un pò in questo?
http://www.martek.it/dblog/articolo.asp?articolo=20
eh eh eh

 eh eh eh
fantastico :-)
ho i crampi LOL


 posso venire anche io? di programmi non me ne importa sega :-)
Associomi caldamente proposta STOP
Prego fornire indirizzo panchina STOP
Un Paperino telegraFico.

GbC � orgogliosamente fermo a vb5....
Non solo lui, c'� almeno il sottoscritto e credo anche il grande papero.
Non osate sparlare del mitico VB5.     ;-)
--
ciao
  Stefano

 Non osate sparlare del mitico VB5.     ;-)
Oh ma quanti :)
-- 
Greg 

 App.Path & "\" & NomeDelFile.
Io ci ho messo un poco a capirla questa.
Ma anche volendo, con tutti i programmi che creano pacchetti di 
installazione, che richiedono una cartella di destinazione, uno come fa 
mettere il suo eseguibile in c:\?
-- 
Greg