Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.lang.visual-basic > #18460 > unrolled thread
| Started by | Greg <greg@alicie.com> |
|---|---|
| First post | 2015-08-19 13:36 +0200 |
| Last post | 2015-08-20 15:27 +0200 |
| Articles | 16 — 4 participants |
Back to article view | Back to it.comp.lang.visual-basic
Shell Greg <greg@alicie.com> - 2015-08-19 13:36 +0200
Re: Shell Greg <greg@alicie.com> - 2015-08-19 14:29 +0200
Re: Shell Luca D <antaniserse@yahoo.it> - 2015-08-19 05:39 -0700
Re: Shell Greg <greg@alicie.com> - 2015-08-19 15:13 +0200
Re: Shell "Andrea (Work)" <andrea.isworkDELETEME@gmail.invalid> - 2015-08-19 16:19 +0200
Re: Shell Greg <greg@alicie.com> - 2015-08-19 19:30 +0200
Re: Shell Franz_aRTiglio <franzgol@N0SPAMtin.it> - 2015-08-19 18:57 +0200
Re: Shell Greg <greg@alicie.com> - 2015-08-19 19:40 +0200
Re: Shell Greg <greg@alicie.com> - 2015-08-19 19:52 +0200
Re: Shell Franz_aRTiglio <franzgol@N0SPAMtin.it> - 2015-08-19 20:48 +0200
Re: Shell Greg <greg@alicie.com> - 2015-08-19 22:54 +0200
Re: Shell Greg <greg@alicie.com> - 2015-08-19 23:10 +0200
Re: Shell Greg <greg@alicie.com> - 2015-08-19 23:16 +0200
Re: Shell Franz_aRTiglio <franzgol@N0SPAMtin.it> - 2015-08-20 12:25 +0200
Re: Shell Greg <greg@alicie.com> - 2015-08-20 15:09 +0200
Re: Shell Franz_aRTiglio <franzgol@N0SPAMtin.it> - 2015-08-20 15:27 +0200
| From | Greg <greg@alicie.com> |
|---|---|
| Date | 2015-08-19 13:36 +0200 |
| Subject | Shell |
| Message-ID | <mr1pnr$tok$1@solani.org> |
VB6 Dopo aver verificato che il file sia presente, ho questa istruzione: ret = Shell(App.Path & "\Update.exe", vbNormalFocus) che ritorna qusto errore: Errore:5-Chiamata di routine o argomento non valido. Il problema si verifica su un solo pc, cosa può essere? Grazie -- Greg
[toc] | [next] | [standalone]
| From | Greg <greg@alicie.com> |
|---|---|
| Date | 2015-08-19 14:29 +0200 |
| Message-ID | <mr1sqh$9bh$1@solani.org> |
| In reply to | #18460 |
Il 19/08/15 13:36:27 Greg ha scritto:
> VB6
> Dopo aver verificato che il file sia presente, ho questa istruzione:
> ret = Shell(App.Path & "\Update.exe", vbNormalFocus)
> che ritorna qusto errore:
> Errore:5-Chiamata di routine o argomento non valido.
> Il problema si verifica su un solo pc, cosa può essere? Grazie
Ho modificato nel modo seguente ma l'errore permane:
file = App.Path & "\Update.exe"
If Dir(file) <> "" Then
q4 = Shell("C:\windows\system32\calc.exe", 1)
q5 = Shell(file, 1)
End If
La prima chiamata va a buon fine, la seconda da errore n.5, eppure
l'argomemento è passato allo stesso modo, il file esiste, non so piu
cosa guardare.
Ho provato anche a cancellare il codice, chiudere il progetto e poi
riscriverlo di nuovo.
Qualche idea? Grazie
--
Greg
[toc] | [prev] | [next] | [standalone]
| From | Luca D <antaniserse@yahoo.it> |
|---|---|
| Date | 2015-08-19 05:39 -0700 |
| Message-ID | <3ab2c66a-16b1-429f-ba5e-0bd22f5a9522@googlegroups.com> |
| In reply to | #18461 |
Il giorno mercoledì 19 agosto 2015 14:29:05 UTC+2, Greg ha scritto: >App.Path & "\Update.exe" Una possibilità: questa concatenazione ha sempre il potenziale problema che se l'applicazione chiamate è nella radice di una unità, genera un percorso non valido (App.Path ritorna "X:\" in quel caso, con l'ovvio errore) In alternativa, problemi di autorizzazioni all'esecuzione di quel file specifico?
[toc] | [prev] | [next] | [standalone]
| From | Greg <greg@alicie.com> |
|---|---|
| Date | 2015-08-19 15:13 +0200 |
| Message-ID | <mr1vda$ioc$1@solani.org> |
| In reply to | #18462 |
Il 19/08/15 14:39:17 Luca D ha scritto: > Il giorno mercoledì 19 agosto 2015 14:29:05 UTC+2, Greg ha scritto: >> App.Path & "\Update.exe" > Una possibilità: questa concatenazione ha sempre il potenziale problema che > se l'applicazione chiamate è nella radice di una unità, genera un percorso > non valido (App.Path ritorna "X:\" in quel caso, con l'ovvio errore) No, no è nella radice. > In alternativa, problemi di autorizzazioni all'esecuzione di quel file > specifico? Forse è questa! Ho chiesto di provare a fare direttamente doppio clik sul file Update.exe e si apre la finestra: Consentire al programma seguente con autore sconosciuto di apportare modifiche la computer? e chiede la pass di amministratore. E cosi si capisce e uno mette la pass, mentre da codice da l'errore di run-time 5, criptico. C'è un modo per superare il blocco da codice? In ogni caso grazie -- Greg
[toc] | [prev] | [next] | [standalone]
| From | "Andrea (Work)" <andrea.isworkDELETEME@gmail.invalid> |
|---|---|
| Date | 2015-08-19 16:19 +0200 |
| Message-ID | <1xkgwtnw7o0k2.qnm1q6cbqs71.dlg@40tude.net> |
| In reply to | #18463 |
Il Wed, 19 Aug 2015 15:13:13 +0200, Greg ha scritto: > E cosi si capisce e uno mette la pass, mentre da codice da l'errore di > run-time 5, criptico. C'è un modo per superare il blocco da codice? > In ogni caso grazie Prendila con le molle, non ho tempo di provarla, ma forse con un file nominato "UPDATE.exe.manifest" dove indichi: | <?xml version="1.0" encoding="UTF-8" standalone="yes"?> | <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> | <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="UPDATE" type="win32"/> | <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> | <security> | <requestedPrivileges> | <requestedExecutionLevel | level="asInvoker"/> | </requestedPrivileges> | </security> | </trustInfo> | </assembly>
[toc] | [prev] | [next] | [standalone]
| From | Greg <greg@alicie.com> |
|---|---|
| Date | 2015-08-19 19:30 +0200 |
| Message-ID | <mr2egi$b0i$1@solani.org> |
| In reply to | #18464 |
Il 19/08/15 16.19.06 Andrea (Work) ha scritto: > Il Wed, 19 Aug 2015 15:13:13 +0200, Greg ha scritto: >> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> >> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> >> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" >> name="UPDATE" type="win32"/> <trustInfo >> xmlns="urn:schemas-microsoft-com:asm.v2"> <security> >> <requestedPrivileges> >> <requestedExecutionLevel >> level="asInvoker"/> >> </requestedPrivileges> >> </security> >> </trustInfo> >> </assembly> Grazie Andrea, ma non esco dall'errore, è come se non ci fosse -- Greg
[toc] | [prev] | [next] | [standalone]
| From | Franz_aRTiglio <franzgol@N0SPAMtin.it> |
|---|---|
| Date | 2015-08-19 18:57 +0200 |
| Message-ID | <mr2c6c$lsk$1@speranza.aioe.org> |
| In reply to | #18461 |
Dopo dura riflessione, Greg ha scritto :
Se non ricordo male, e' un casino generato dall'UAC
> q5 = Shell(file, 1)
quell'uno e' vbNormalFocus, cioè impone di attivare la finestra (che
NON
si attiva perchè compare il prompt di autorizzazione UAC) e quindi
genera un errore come se l'applicazione non fosse partita (invece e' in
attesa del dialogo UAC).
Dopo vari smadonnamenti risolsi cosi:
file = App.Path & "\Update.exe"
If Dir(file) <> "" Then
On error resume next
q5 = Shell(file, 1)
On error goto 0
End If
Poco elegante ma funzionante.
[toc] | [prev] | [next] | [standalone]
| From | Greg <greg@alicie.com> |
|---|---|
| Date | 2015-08-19 19:40 +0200 |
| Message-ID | <mr2f2u$d5r$1@solani.org> |
| In reply to | #18465 |
Il 19/08/15 18.57.55 Franz_aRTiglio ha scritto: > Dopo dura riflessione, Greg ha scritto : > Se non ricordo male, e' un casino generato dall'UAC >> q5 = Shell(file, 1) > quell'uno e' vbNormalFocus, cioè impone di attivare la finestra (che NON > si attiva perchè compare il prompt di autorizzazione UAC) e quindi > genera un errore come se l'applicazione non fosse partita (invece e' in > attesa del dialogo UAC). > Dopo vari smadonnamenti risolsi cosi: > file = App.Path & "\Update.exe" > If Dir(file) <> "" Then > On error resume next > q5 = Shell(file, 1) > On error goto 0 > End If > Poco elegante ma funzionante. Grazie Franz, non mi da l'errore, ma Update non viene mai eseguito. Adesso sono sulla macchina di sviluppo, xp come amministratore, quello che non capisco è: - perchè prima funzionava e adesso no - perchè lancia Calc.exe e non Update.exe Mai successa una cosa del genere, non so che pesci prendere :( -- Greg
[toc] | [prev] | [next] | [standalone]
| From | Greg <greg@alicie.com> |
|---|---|
| Date | 2015-08-19 19:52 +0200 |
| Message-ID | <mr2fot$fmo$1@solani.org> |
| In reply to | #18465 |
Il 19/08/15 18.57.55 Franz_aRTiglio ha scritto: > Dopo dura riflessione, Greg ha scritto : > Se non ricordo male, e' un casino generato dall'UAC >> q5 = Shell(file, 1) > quell'uno e' vbNormalFocus, cioè impone di attivare la finestra (che NON > si attiva perchè compare il prompt di autorizzazione UAC) e quindi > genera un errore come se l'applicazione non fosse partita (invece e' in > attesa del dialogo UAC). A me che sia normalfocus non interessa. L'importante è che Update esegua 2 sole semplici istruzioni: - copy il programma nuovo sul vecchio - lo mandi inesecuzione con un altra funzione shell Purtroppo non va bene con nessun parametro, neanche vbHide, e neanche senza parametri del tutto. E' un bel mistero -- Greg
[toc] | [prev] | [next] | [standalone]
| From | Franz_aRTiglio <franzgol@N0SPAMtin.it> |
|---|---|
| Date | 2015-08-19 20:48 +0200 |
| Message-ID | <mr2ilb$5k2$1@speranza.aioe.org> |
| In reply to | #18468 |
Greg ha detto questo mercoledì : > A me che sia normalfocus non interessa. > L'importante è che Update esegua 2 sole semplici istruzioni: > - copy il programma nuovo sul vecchio > - lo mandi inesecuzione con un altra funzione shell > Purtroppo non va bene con nessun parametro, neanche vbHide, e neanche senza > parametri del tutto. E' un bel mistero 'spe... frena: stai cercando di lanciare un "update.exe", ho capito bene ? il VECCHIO programma lancia il programma che lo deve sostituire ? Se ho capito bene allora non e' un problema di UAC, il problema e' che il VECCHIO programma è in esecuzione mentre il NUOVO tenta di sovrascriverlo! Se invece ho capito male, a 'sto punto proverei a lanciare explorer.exe specificandogli l'exe da lanciare come parametro https://support.microsoft.com/en-us/kb/130510
[toc] | [prev] | [next] | [standalone]
| From | Greg <greg@alicie.com> |
|---|---|
| Date | 2015-08-19 22:54 +0200 |
| Message-ID | <mr2qfb$nr3$1@solani.org> |
| In reply to | #18469 |
Il 19/08/15 20.48.19 Franz_aRTiglio ha scritto: > 'spe... frena: > stai cercando di lanciare un "update.exe", ho capito bene ? il VECCHIO > programma lancia il programma che lo deve sostituire ? > Se ho capito bene allora non e' un problema di UAC, il problema > e' che il VECCHIO programma è in esecuzione mentre il NUOVO tenta di > sovrascriverlo! Mi hai fatto accendere la lampadina!!! C'era un timer che aspettava che VECCHIO chiudesse prima di sovrascrivere. Chissà perchè, non ricordavo piu a cosa serviva l'ho tolta, per rendere il codice piu chiaro :( Me tapino -- Greg
[toc] | [prev] | [next] | [standalone]
| From | Greg <greg@alicie.com> |
|---|---|
| Date | 2015-08-19 23:10 +0200 |
| Message-ID | <mr2rc1$r5j$1@solani.org> |
| In reply to | #18469 |
Il 19/08/15 20.48.19 Franz_aRTiglio ha scritto: > 'spe... frena: > stai cercando di lanciare un "update.exe", ho capito bene ? il VECCHIO > programma lancia il programma che lo deve sostituire ? Ho ritornato le cose come stavano prima, Update funziona bene in modalità progettaizone ma il compilato, appena lanciato mi da un altro errore strano: Impossibile avviare l'applicazione. La configurazione dell'applicazione non è corretta. Una nuova installazione potrebbe risolvere il problema. Ho cercato con google ma non ci sono occorrenze di qusto errore nel mondo vb6. Hai per caso qualche idea delle tue? Io ormai ho la mente offuscata da una giornata di stress :( -- Greg
[toc] | [prev] | [next] | [standalone]
| From | Greg <greg@alicie.com> |
|---|---|
| Date | 2015-08-19 23:16 +0200 |
| Message-ID | <mr2rnl$sf2$1@solani.org> |
| In reply to | #18471 |
Il 19/08/15 23.10.09 Greg ha scritto: > Ho cercato con google ma non ci sono occorrenze di qusto errore nel mondo > vb6. Hai per caso qualche idea delle tue? Io ormai ho la mente offuscata da > una giornata di stress :( Trovato: il file manifest da fastidio :( Basta, chiudo e vado a dormire. Grazie della dritta Franz :) -- Greg
[toc] | [prev] | [next] | [standalone]
| From | Franz_aRTiglio <franzgol@N0SPAMtin.it> |
|---|---|
| Date | 2015-08-20 12:25 +0200 |
| Message-ID | <mr49it$ook$1@speranza.aioe.org> |
| In reply to | #18472 |
Greg ha spiegato il 19/08/2015 : >> Ho cercato con google ma non ci sono occorrenze di qusto errore nel mondo >> vb6. Hai per caso qualche idea delle tue? Io ormai ho la mente offuscata da >> una giornata di stress :( > Trovato: il file manifest da fastidio :( > Basta, chiudo e vado a dormire. > Grazie della dritta Franz :) :) Comunque, la prossima volta ti conviene fare come segue: Il programma che deve aggiornarsi usando l'api "GetCurrentProcessId" ottiene il proprio ProcessId (che e' univoco), lancia l'updater passandogli il ProcessId come parametro e si chiude; l'updater controlla la lista dei programmi in esecuzione fino a che il ProcessID non scompare (il programma si è chiuso), e solo allora interviene. In questo modo non hai problemi di timer o di ritardi in chiusura causati da programmi esterni (tipo antivirus)...
[toc] | [prev] | [next] | [standalone]
| From | Greg <greg@alicie.com> |
|---|---|
| Date | 2015-08-20 15:09 +0200 |
| Message-ID | <mr4jii$6cc$1@solani.org> |
| In reply to | #18473 |
Il 20/08/15 12:25:41 Franz_aRTiglio ha scritto: > Comunque, la prossima volta ti conviene fare come segue: > Il programma che deve aggiornarsi usando l'api "GetCurrentProcessId" > ottiene il proprio ProcessId (che e' univoco), lancia l'updater > passandogli il ProcessId come parametro e si chiude; l'updater controlla > la lista dei programmi in esecuzione fino a che il ProcessID non > scompare (il programma si è chiuso), e solo allora interviene. > In questo modo non hai problemi di timer o di ritardi in chiusura > causati da programmi esterni (tipo antivirus)... E invece il problema c'è lo stesso, perchè .... ho fatto queste prove: Prima di andare udare un bel po di api per sapere se il ProcessID è ancora in funzione ho fatto delle prove piu semplici e immediate: - ho inibito ogni operazione dell'Updater, solo lo show della form, col chiamante NON in esecuzione, visto che lo lancio manualmente, incredibile mi da errore 5; - ho rifatto ex novo l'updater, ricompilato e cambiato nome in prova2.exe, lo lancio manualmente e va bene nel senso che lancia il programma aggiornato e si chiude; lo rinomino in Update.exe oppure in provaUpdate.exe e compare la richiesta pass amministratore! Questa cosa mi sfugge, sembra che la parolina Update nel nomeprogramma non sia più gradita per qualche strano motivo! -- Greg
[toc] | [prev] | [next] | [standalone]
| From | Franz_aRTiglio <franzgol@N0SPAMtin.it> |
|---|---|
| Date | 2015-08-20 15:27 +0200 |
| Message-ID | <mr4k7l$j9j$1@speranza.aioe.org> |
| In reply to | #18474 |
Greg ci ha detto : > richiesta pass amministratore! Questa cosa mi sfugge, sembra che la parolina > Update nel nomeprogramma non sia più gradita per qualche strano motivo! Idem con "install" e "setup" altri similari, la cosa e' VOLUTA da windows vista in poi per aggirare (pateticamente) la problematica di intercettare programmi che pur non usando registry e/o percorsi riservati/di sistema e/o windows installer. anche se compili il piu stupido degli "hello world" ma lo nomini come setup install update ecc. quando parte invoca l' UAC.
[toc] | [prev] | [standalone]
Back to top | Article view | it.comp.lang.visual-basic
csiph-web