Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[REG] - percorsi variabili

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[REG] - percorsi variabili

Messaggioda ssjx » ven mar 21, 2008 12:46 am

Problema: in un file di registro ho bisogno di impostare dei percorsi con una variabile, ovvero la cartella in cui risiede il file .reg

Girando per la rete mi sono imbattuto (dopo 10.000 ricerche) in questa discussione che, credo, sia quello che cercavo... solo che non riesco a capire come fare... se qualche anima pia mi volesse aiutare ecco il codice del file .reg attuale:

Codice: Seleziona tutto
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\VIRSCAN]
@="VIRSCAN"

[HKEY_CLASSES_ROOT\Directory\shell\VIRSCAN\Command]
@="C:\\Programmi\\VIRSCAN\\avcls.exe -noboot -nombr -r3 -heuristic:3 \"%1\" "

[HKEY_CLASSES_ROOT\*\shell\VIRSCAN]
@="VIRSCAN"

[HKEY_CLASSES_ROOT\*\shell\VIRSCAN\command]
@="C:\\Programmi\\VIRSCAN\\avcls.exe -noboot -nombr -r3 -heuristic:3 \"%1\" "


La parte che deve essere impostata come variabile è C:\\Programmi\\VIRSCAN .... help! [cry]
Usavo IE e mi lamentavo... usavo Mozilla e mi lamentavo, decisamente meno ma mi lamentavo, ... poi ho trovato Opera e fu amore a prima vista
Avatar utente
ssjx
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5756
Iscritto il: ven nov 26, 2004 3:37 pm
Località: Barcellona

Messaggioda Silver Black » ven mar 21, 2008 11:46 am

In che linguaggio? E poi non ho capito se il tuo problema è IMPOSTARE la chiave del registro (scriverla) oppure LEGGERLA.
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda ssjx » ven mar 21, 2008 2:38 pm

Allora.... io devo scrivere quelle chiavi di registro.... il codice postato sopra è infatti il contenuto del file .reg che uso attualmente solo che x adesso devo editarlo a mano in caso l'eseguibile in questione non sia nella cartella predefinita

Nella discussione linkata sopra (http://www.computing.net/programming/wwwboard/forum/15732.html) ho capito che si può fare tutto tramite un file .bat .... ma non ho capito come

Spero sia chiaro adesso.. in caso chiedi pure

Tnx [:)]
Usavo IE e mi lamentavo... usavo Mozilla e mi lamentavo, decisamente meno ma mi lamentavo, ... poi ho trovato Opera e fu amore a prima vista
Avatar utente
ssjx
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5756
Iscritto il: ven nov 26, 2004 3:37 pm
Località: Barcellona


Messaggioda Silver Black » ven mar 21, 2008 3:09 pm

No, non capisco. Sarò duro, sarà deformazione professionale... non so. [...]

Prima di tutto: quale input hai e quale output/risultato vuoi ottenere?
Secondo: quale linguaggio di programmazione stai usando? Ti serve un linguaggio di programmazione per scrivere nel registro, altrimenti un file reg è fisso e va usato così com'è (per modificare il file reg ti serve comunque un linguaggio di programmazione).

Se riguarda solo i file reg hai sbagliato forum, è più un quesito da porre tra i problemi di Windows, mi sembra. Ma dovrei capire meglio cos'hai in input e cosa vuoi ottenere con il tuo programma (se scrivi in questo forum devi creare per forza un programma). [uhm]
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda ssjx » ven mar 21, 2008 3:26 pm

Uhmm.... allora mi sa che va in windows perché io non devo creare alcun programma ma solo un file .bat ...

comunque... hai presente che se esegui un file .reg questo inserisce le chiavi in esso presenti nel registro di windows giusto?

OK... il mio file .reg è quello che ho postato sopra... il problema è che quella dictory deve essere trasformata da:
Codice: Seleziona tutto
C:\\Programmi\\VIRSCAN\\avcls.exe -noboot -nombr -r3 -heuristic:3 \"%1\" "

a qualcosa come:
Codice: Seleziona tutto
%currentpath%\\avcls.exe -noboot -nombr -r3 -heuristic:3 \"%1\" "



Se apri la discussione che ho linkato sopra in pratica dice che la cosa è possibile tramite un file .bat solo che io non sono riuscito a capire come si fa [cry]


Credo che così sia chiaro... o no? [uhm]
Usavo IE e mi lamentavo... usavo Mozilla e mi lamentavo, decisamente meno ma mi lamentavo, ... poi ho trovato Opera e fu amore a prima vista
Avatar utente
ssjx
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5756
Iscritto il: ven nov 26, 2004 3:37 pm
Località: Barcellona

Messaggioda Silver Black » ven mar 21, 2008 3:58 pm

Adesso è molto più chiaro, ma mi sfugge l'utilità pratica...
Fermo restando che con un programma ci stai si e no 10 righe di codice, con un file bat puoi basta che scrivi

Codice: Seleziona tutto
@echo off
cls
echo %currentpath%\\avcls.exe -noboot -nombr -r3 -heuristic:3 \"%1\" " > C:\NuovoFileReg.reg


per trovarti un C:\ un file "NuovoFileReg.reg" che conterrà la nuova chiave da inserire nel registro.

Ma... tutto qui? Secondo me c'è qualcosa che non torna... o è questo che volevi? [...]
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda ssjx » ven mar 21, 2008 4:17 pm

Silver Black ha scritto:Ma... tutto qui? Secondo me c'è qualcosa che non torna... o è questo che volevi? [...]


credo tu parta dal presupposto errato che io sia un programmatore [;)] ... non conosco nessun linguaggio di programmazione purtroppo


Tornando al quesito: io ho quindi un file .reg con il codice postato sopra.

Devo creare un file .bat che si occupi di modificare, a seconda della dictory in cui si trova, il percorso nel file .reg in modo da registrare quel file avcls.exe nella directory corretta (che sul mio PC può essere C:\Programmi\VIRSCAN ma su quello di un altro magari è C:\pincopallino)

%currentpath% è una stringa che ho messo io arbitrariamente per farti capire cosa voglio fare... ma nel file .reg non deve esserci %currentpath% ma, x es, c:\pincopallino

OK... a questo punto penso proprio che sono riuscito a spiegarmi come si deve [:D] .... ora, stando a quanto ho scritto, mi posteresti il codice del file .bat che farà tutto il lavoro? (quello che hai messo sopra non va)

Grazie mille per la pazienza [:)]
Usavo IE e mi lamentavo... usavo Mozilla e mi lamentavo, decisamente meno ma mi lamentavo, ... poi ho trovato Opera e fu amore a prima vista
Avatar utente
ssjx
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5756
Iscritto il: ven nov 26, 2004 3:37 pm
Località: Barcellona

Messaggioda ssjx » ven mar 21, 2008 4:43 pm

Siamo alla svolta.... finalmente sono riuscito ad interpretare quella discussione e riesco ad usare il trucchetto esposto... ma resta un problema... infatti nel codice generato per qualche motivo che non conosco quell' \"%1\ viene sostituito da \"\" .... PERCHE'??? [cry+]

ecco il codice del mio file .bat

Codice: Seleziona tutto
@echo off
SET path=%CD%
SET path=%path:\=\\%
> regfile.reg ECHO Windows Registry Editor Version 5.00
>>regfile.reg ECHO.
>>regfile.reg ECHO [HKEY_CLASSES_ROOT\Directory\shell\VIRSCAN]
>>regfile.reg ECHO @="VIRSCAN"
>>regfile.reg ECHO.
>>regfile.reg ECHO [HKEY_CLASSES_ROOT\Directory\shell\VIRSCAN\Command]
>>regfile.reg ECHO @="%path%\\avcls.exe -noboot -nombr -r3 -heuristic:3 \"%1\" "
>>regfile.reg ECHO.
>>regfile.reg ECHO [HKEY_CLASSES_ROOT\*\shell\VIRSCAN]
>>regfile.reg ECHO @="VIRSCAN"
>>regfile.reg ECHO.
>>regfile.reg ECHO [HKEY_CLASSES_ROOT\*\shell\VIRSCAN\Command]
>>regfile.reg ECHO @="%path%\\avcls.exe -noboot -nombr -r3 -heuristic:3 \"%1\" "
Usavo IE e mi lamentavo... usavo Mozilla e mi lamentavo, decisamente meno ma mi lamentavo, ... poi ho trovato Opera e fu amore a prima vista
Avatar utente
ssjx
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5756
Iscritto il: ven nov 26, 2004 3:37 pm
Località: Barcellona

Messaggioda Silver Black » ven mar 21, 2008 6:24 pm

Allora, %1 è il parametro passato al file bat, quindi se fai

Codice: Seleziona tutto
echo %1


e richiami il file con

Codice: Seleziona tutto
<nomefile.bat> CIAO!


ti verrà stampato "CIAO!".

Per il tuo problema la soluzione l'hai detta tu stesso: usare la variabile %CD che mostra proprio il percorso corrente. Se volevi passarlo tu al file bat potevi usare %1, ma visto che vuoi che il file inserisca automaticamente il percorso in cui si trova, usa %CD.

Prova questo codice in un file bat:

Codice: Seleziona tutto
@echo off
cls
echo.
echo Il percorso corrente è %CD%
echo.



Vedrai che ti restituisce il percorso in cui è posizionato il file bat.
Adesso per il file reg è un attimo! Prova a farlo tu, in caso ci dici se hai problemi.
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda ste_95 » sab apr 19, 2008 4:05 pm

Anche se non siamo proprio tanto in topic, in bacth cosa vuol dire %1?
«A volte è meglio tacere e sembrare stupidi che aprir bocca e togliere ogni dubbio.» Oscar Wilde
Avatar utente
ste_95
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 17271
Iscritto il: lun ago 06, 2007 11:19 am

Messaggioda Silver Black » sab apr 19, 2008 4:11 pm

ste_95 ha scritto:Anche se non siamo proprio tanto in topic, in bacth cosa vuol dire %1?


Il primo parametro passato al file batch.
Es.:

file TEST.bat:
Codice: Seleziona tutto
@echo off
cls
echo Il primo parametro è %1


scrivendo dal prompt:

test PARTEST1

Apparirà:

Il primo parametro è PARTEST1
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda ssjx » sab apr 19, 2008 4:12 pm

non so di preciso il suo significato... credo stia semplicemente ad indicare l'unica variabile della stringa (il file da esaminare)


PS
comunque sono già ad ottimo punto... manca solo uan cosetta ed è finito... ormai è solo questione di qualche giorno (appena finisco gli esami)
Usavo IE e mi lamentavo... usavo Mozilla e mi lamentavo, decisamente meno ma mi lamentavo, ... poi ho trovato Opera e fu amore a prima vista
Avatar utente
ssjx
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5756
Iscritto il: ven nov 26, 2004 3:37 pm
Località: Barcellona

Messaggioda ste_95 » sab apr 19, 2008 4:23 pm

ssjx ha scritto:non so di preciso il suo significato... credo stia semplicemente ad indicare l'unica variabile della stringa (il file da esaminare)

E un bat del genere?

Codice: Seleziona tutto
del %1
if exist %1 goto l
del %0


comunque sono già ad ottimo punto... manca solo uan cosetta ed è finito... ormai è solo questione di qualche giorno (appena finisco gli esami)

Ok, ho scoperto che lo script non funziona se non opera in C:\.
«A volte è meglio tacere e sembrare stupidi che aprir bocca e togliere ogni dubbio.» Oscar Wilde
Avatar utente
ste_95
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 17271
Iscritto il: lun ago 06, 2007 11:19 am

Messaggioda Silver Black » sab apr 19, 2008 4:57 pm

ste_95 ha scritto:E un bat del genere?

Codice: Seleziona tutto
del %1
if exist %1 goto l
del %0


Dovrebbe essere: cancella il file passato, se esiste ancora il file passato vai alla parte di codice delimitata dall'etichettà "l", altrimenti cancella il se stesso (il file bat).


Ok, ho scoperto che lo script non funziona se non opera in C:\.


Assurdo.
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda ste_95 » dom apr 20, 2008 5:29 pm

Silver Black ha scritto:Dovrebbe essere: cancella il file passato, se esiste ancora il file passato vai alla parte di codice delimitata dall'etichettà "l", altrimenti cancella il se stesso (il file bat).

Quindi se fosse che il file 123456.exe cerca di eseguire il file a.bat, il file 123456.exe verrà eliminato?
«A volte è meglio tacere e sembrare stupidi che aprir bocca e togliere ogni dubbio.» Oscar Wilde
Avatar utente
ste_95
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 17271
Iscritto il: lun ago 06, 2007 11:19 am

Messaggioda Silver Black » dom apr 20, 2008 10:21 pm

ste_95 ha scritto:Quindi se fosse che il file 123456.exe cerca di eseguire il file a.bat, il file 123456.exe verrà eliminato?


No, si parla di file BAT, è il file bat che verrà eliminato, in quanto il %0 è se stesso. Anche se un eseguibile richiama il file bat non verrà cancellato l'eseguibile (il file bat non sa chi è che lo chiama!), ma è il file bat che cancellerà se stesso dopo la sua esecuzione.
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda ste_95 » lun apr 21, 2008 6:23 am

Silver Black ha scritto:No, si parla di file BAT, è il file bat che verrà eliminato, in quanto il %0 è se stesso. Anche se un eseguibile richiama il file bat non verrà cancellato l'eseguibile (il file bat non sa chi è che lo chiama!), ma è il file bat che cancellerà se stesso dopo la sua esecuzione.

D'accordo, ma quel del %1 considerando l'apertura da parte del file 123456.exe?
«A volte è meglio tacere e sembrare stupidi che aprir bocca e togliere ogni dubbio.» Oscar Wilde
Avatar utente
ste_95
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 17271
Iscritto il: lun ago 06, 2007 11:19 am

Messaggioda Silver Black » lun apr 21, 2008 10:02 am

ste_95 ha scritto:D'accordo, ma quel del %1 considerando l'apertura da parte del file 123456.exe?


Il %1 è il parametro passato al file bat, non il parametro dell'eseguibile! Quindi dipende COSA viene passato al batch.

Se passi l'eseguibile al file bat:

file.bat <nome eseguibile.exe>

il file eseguibile verrà cancellato, dopodichè verrà cancellato il file bat.
Se invece il file bat viene lanciato dall'eseguibile 123456.exe ma poi al file bat viene passato il file 789.exe, è il file 789.exe che viene cancellato (e alla fine anche il file bat), non il file 123456.exe.
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda ste_95 » lun apr 21, 2008 1:21 pm

Chiaro, grazie! [:)]
«A volte è meglio tacere e sembrare stupidi che aprir bocca e togliere ogni dubbio.» Oscar Wilde
Avatar utente
ste_95
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 17271
Iscritto il: lun ago 06, 2007 11:19 am


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

cron
Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising