Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* Variabili d'ambiente
Nuovo argomento   Rispondi    Indice del forum -> Windows XP e Reperti Archeologici
Precedente :: Successivo  
Autore Messaggio
Perito80
Mortale devoto
Mortale devoto


Registrato: 06/12/06 12:03
Messaggi: 6

MessaggioInviato: 06 Dic 2006 17:28    Oggetto: * Variabili d'ambiente Rispondi citando

Ciao a tutti,
per poter far partire un programma senza che mi dia errore devo inserire nelle variabili d'ambiente il percorso della licenza.
Il problema è che se creo la variabile LM_LICENSE_FILE con il percorso giusto tramite Pannello di controllo -> Sistema -> Avanzate -> Variabili d'ambiente e la creo nella sezione "Variabili d'ambiente per l'utente ..." tutto funziona perfettamente ed il programma si apre. Se invece creo la variabile tramite un processo creato da me (con il linguaggio C++) che mi lavora direttamente sul registro di sistema creando in HKCU\Environment la variabile LM_LICENSE_FILE (che poi viene creata in automatico anche su HKU\S ....\environment) il programma al momento dell'apertura mi da errore e si richiude.
Se dopo aver creato la variabile agendo solo sul registro di sistema (e quindi il programma non funziona) vado su Pannello di controllo -> Sistema -> Avanzate -> Variabili d'ambiente seleziono la variabile, faccio modifica, non modifico assolutamente nulla e confermo tutto il programma ora funziona perfettamente. Lo stesso accade se disconnetto e riconnetto il sistema.
Sapete dirmi agendo su Pannello di controllo -> Sistema -> Avanzate -> Variabili d'ambiente che cosa succede, oltre che modificarsi quella parte del registro di sistema che già so andare a modificare, che non mi rende necessario la disconnessione del sistema?

Grazie!!
Top
Profilo Invia messaggio privato Yahoo MSN
chemicalbit
Dio maturo
Dio maturo


Registrato: 01/04/05 17:59
Messaggi: 18597
Residenza: Milano

MessaggioInviato: 06 Dic 2006 18:56    Oggetto: Rispondi citando

Probabilemnte quell'elenco è memorizzato in due "punti" diversi di windows, e con quella procedure "agiorni" la seconda copia (quella che vien effettivamente usata) copaindola dalla prima.

Purtroppo non me ne intendo,
ma -domanda- perché devi fareper forza così?
Top
Profilo Invia messaggio privato
madvero
Amministratore
Amministratore


Registrato: 05/07/05 20:42
Messaggi: 19480
Residenza: Ero il maestro Zen. Scrivevo piccole poesie Haiku. Le mandavo a tutti via e-mail.

MessaggioInviato: 06 Dic 2006 20:07    Oggetto: Rispondi citando

in xp le variabili d'ambiente scritte nel registro di sistema, per essere definitive, necessitano del riavvio del sistema stesso.
il tuo "modifica" senza toccare alcunchè probabilmente equivale ad un refresh del registro, in modo che vengano caricate le nuove variabili al posto di quelle in memoria.
Top
Profilo Invia messaggio privato Invia e-mail HomePage
horus
Macchinista
Macchinista


Registrato: 22/03/05 09:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 07 Dic 2006 08:40    Oggetto: Rispondi citando

Sinceramente non so cosa succeda (non mi sono mai posto il problema) ma potresti fare una prova che io di solito uso per capire le modifiche al registro.

1. Apri regedit e fai un export completo.
2. Dal pannello fai la modifica
3. Apri regedit e fai un export completo.
4. confronti i due file creati ed ottieni esattamente le chiavi modificate (al massimo potrebbe venirti fuori qualcosa dell'antivirus o di programmi in background ma dovresti riconoscerli).

Se le modifiche sono le stesse che fai tu allora il problema non sta nel registro ma magari, come dice Madvero (e Microsoft) per quelle globali devi riavviare il sistema e per quelle per Nome Utente almeno i programmi che le devono leggere.
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 07 Dic 2006 17:31    Oggetto: Re: Variabili d'ambiente Rispondi citando

Perito80 ha scritto:
Se dopo aver creato la variabile agendo solo sul registro di sistema
...
che non mi rende necessario la disconnessione del sistema?


cercando su Google ho trovato questa discussione che credo faccia al caso tuo:

http://groups.google.com/group/microsoft.public.vb.winapi/browse_thread/thread/c72ae12d4bdbff1c/a8bdcaa4f5e4fdec%23a8bdcaa4f5e4fdec
Top
Profilo Invia messaggio privato HomePage
Shannara
Dio maturo
Dio maturo


Registrato: 18/05/05 17:24
Messaggi: 1083
Residenza: In cerca di GRoANE

MessaggioInviato: 16 Dic 2006 11:33    Oggetto: Rispondi citando

Io programmo in Delphi, che è molto simile al C++. Per modifiche alla variabile PATH lancio il messaggio WM_SETTINGCHANGE. Suppongo che funzioni anche nel caso di nuove variabili.

Comunque ho preferito dare un occhio in rete e ho trovato questo articolo nella KB Microsoft:

http://support.microsoft.com/kb/104011/en-us

Tuttavia dice anche che per propagare la modifica ad applicazioni non MS in Windows 95/98 (ME?) il reboot è necessario.
Top
Profilo Invia messaggio privato
Perito80
Mortale devoto
Mortale devoto


Registrato: 06/12/06 12:03
Messaggi: 6

MessaggioInviato: 20 Dic 2006 15:41    Oggetto: Rispondi citando

A madvero:
penso anche io che il tasto medifica faccia un refresh del registro, ma quello che non so e che vorrei sapere è come si fa a fare il refresh, o qualunque altra cosa succeda, del registro.

A horus:
l'ho fatto, ma non mi ha trovato alcune differenze. Ho notato però che esporta solo HKEY_LOCAL_MACHINE e HKEY_USERS, non so se è un errore o è giusto così.

A SverX:
sto programmando in C++ e non in Visual Basic.

A Shannara:
già provata quella soluzione, ma non ho avuto effetti. Se è possibile non riavviare usando l'interfaccia windows penso che sia possibile farlo anche se non uso l'interfaccia windows, il problema è che ancora non so come fare, qualcuno dovrà pure saperlo.
Top
Profilo Invia messaggio privato Yahoo MSN
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 20 Dic 2006 16:20    Oggetto: Rispondi citando

Perito80 ha scritto:
A SverX:
sto programmando in C++ e non in Visual Basic.


A Perito80:
un po' di elasticità... se in VB dice:
Codice:
Private Const HWND_BROADCAST = -1
Private Const WM_WININICHANGE = &H1A
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
  ByRef lParam As Any) As Long

Dim x As Long
x = SendMessage(HWND_BROADCAST, WM_WININICHANGE, 1, ByVal 0&)


tu in C++ prova con:

Codice:
SendMessage(-1, 0x1A, 1, 0);
Top
Profilo Invia messaggio privato HomePage
Perito80
Mortale devoto
Mortale devoto


Registrato: 06/12/06 12:03
Messaggi: 6

MessaggioInviato: 20 Dic 2006 17:15    Oggetto: Rispondi citando

Niente SverX non funziona
Top
Profilo Invia messaggio privato Yahoo MSN
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 21 Dic 2006 18:52    Oggetto: Rispondi citando

Perito80 ha scritto:
Niente SverX non funziona


mmm... prova questo:

http://rubyforge.org/snippet/detail.php?type=snippet&id=56

anche se mi sembra la stessa cosa... magari prima prova con

Codice:
ret = SendMessage(0xFFFF, 0x1A, 1, 0);


(mettiamo FFFF invece di -1, non si sa mai... e ricorda che "ret" e i parametri sono "long"... ovvero interi segnati su 16 bit....)


edit: leggendo il link postato da Shannara trovo

Codice:
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
    (LPARAM) "Environment", SMTO_ABORTIFHUNG,
    5000, &dwReturnValue);


che viene descritto esattamente come

Citazione:
To effect these changes without having to log off, broadcast a WM_SETTINGCHANGE message to all windows in the system, so that any interested applications (such as Windows Explorer, Program Manager, Task Manager, Control Panel, and so forth) can perform an update.
Top
Profilo Invia messaggio privato HomePage
Perito80
Mortale devoto
Mortale devoto


Registrato: 06/12/06 12:03
Messaggi: 6

MessaggioInviato: 21 Dic 2006 20:20    Oggetto: Rispondi citando

Provato anche questo, ma niente da fare.
Top
Profilo Invia messaggio privato Yahoo MSN
Perito80
Mortale devoto
Mortale devoto


Registrato: 06/12/06 12:03
Messaggi: 6

MessaggioInviato: 21 Dic 2006 20:34    Oggetto: Rispondi

Retifico, invece funziona.
Avevo solo errato a scrivere il codice.
Top
Profilo Invia messaggio privato Yahoo MSN
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Windows XP e Reperti Archeologici Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi