Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1

    LINGUAGGIO .NET registrare chiavi

    Chiedo scusa a l moderatore per non aver messo il linguaggio nel post precedente....


    il mio problema è che vorrei cambiare il valore di una chiave di registro che riesco a cambiare tranquillamente registrando il file.reg che contine il seguente codice:

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
    "Shell"="C:\\prova.exe" registrando a mano questo file.reg funziona tutto perettamente. Vorrei fare tutto questo collegando una sub ad un bottone in una form.



    secondo le indicazioni del post precedente ho cambiato la sub collegata al bottone con questa:


    Dim B As String

    B = Shell("REG add HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon /v Shell /t REG_sz /d c:\\prova.exe /f")


    ma non funziona lo stesso. Il fatto è che non mi da nessun errore esegue come se non ci fosse nulla di sbagliato, solo che nel registro non cambia nulla.

    Come se po fà?????


  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dovrebbe essere

    codice:
    Dim B As String
    
    B = Shell("REG add ""HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"" /v Test /t REG_sz /d c:\prova.exe /f")
    ... fai attenzione alle virgolette ...

    P.S. Ma se e' per VB.NET perche' non hai inserito questo nel titolo invece che LINGUAGGIO .NET?

  3. #3

    niente da fare

    ciao
    ho provato ad inserire questo:



    Dim B As String

    B = Shell("REG add ""HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion \Winlogon"" /v Shell /t REG_sz /d c:\prova.exe /f")



    ma nulla ! non mi da nessun errore e nono cambia il valore della chiave nel registro. Mi viene un dubbio forse B non deve essere String... AIUTO!!!!!


  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: niente da fare

    Sicuramente B dovrebbe essere un Integer, ma non e' questo il problema.

    Hai scritto WindowsNT senza spazio mentre ci va uno spazio. Deve essere

    Windows NT


    P.S. Fai attenzione a cambiare la Shell del sistema ... non mi piacerebbe che un programma me la cambiasse ...

  5. #5
    Ma non si fa prima ad usare le classi del .NET Framework per la gestione del registro? Il comando REG è presente solo da Windows XP in su, e se io usassi l'applicazione in questione su Windows 2000?
    codice:
            Dim rk As Microsoft.Win32.RegistryKey
            Try
                rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", True)
                rk.SetValue("Shell", "c:\prova.exe")
            Catch ex As System.Security.SecurityException
                MessageBox.Show("L'utente non dispone dei diritti necessari per scrivere sulla chiave di registro.", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Finally
                If Not rk Is Nothing Then rk.Close()
            End Try
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6

    NULLA DA FARE... ma alternativa...

    Allora ho provato a cambiare b in integer e a mettere lo spazio tra windows nt ma niente ho provato anche il codice che ha postato mitaly e mi da un errore mi inchioda svchost.exe e smette di funzionare. Io ho come sistema operativo vista business ma la stessa cosa la fa su windows xp pro.

    Per oregon mi hai suggerito di non cambiare la shell di avvio, solo che è proprio quello che devo fare per far funzionare correttamente il programma, perchè andrà messo su dei totem multimediali dove l'unico programma che si deve avviare deve essere questo. La cosa funziona nella vecchia release che avevo fatto registrando manualmente un file che contiene appunto questo comando ora dato che nella nuova versione ho aggiunto delle funzioni, devo inserire un pulsante per registrare l'avvio del programma o l'avvio di windows


    VORREI SOLO CAMBIARE UN VALORE DENTRO UNA CHIAVE!!!! sig. sig.


    avrei pensato un soluzione alternativa. se allego il file che uso tutt'ora e che sono sicuro che funziona e al bottone invece di dare il comando di cambiare il valore della chiave gli dico di aprire e lanciare quel file esterno che si troverà nella stessa path dell'eseguibile potrebbe funzionare secondo voi..... bene se si come faccio a richiamare un file nella stessa path dell'eseguibile e a lanciarlo?????




  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... il codice funziona ... probabilmente non hai i diritti per eseguirlo (sei amministratore)?

    Prova con una chiave diversa ... prova con Test al posto di Shell ...

    P.S. Come vedi se la chiave e' cambiata? Usi il Regedit?

  8. #8
    Confermo, entrambi i codici funzionano su Windows XP. Il problema, come suggeritoti da Oregon, deriva molto probabilmente dal fatto che sotto Vista la sicurezza è molto maggiore e ti impedisce di modificare quella chiave (si tratta di una delle chiavi più sfruttate dai malware e dai virus, mentre l'utente non ha alcuna necessità di modificarla).
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma poi ... se si tratta di una installazione personalizzata di un sistema, perche' lo dovrebbe fare il tuo programma?

    Fallo quando installi il sistema con uno strumento adeguato ...

    La questione del vecchio e del nuovo programma non e' chiara ... non giustifica il fatto per cui deve essere il programma a modificare questo tipo di configurazione del sistema operativo ... anzi ...

  10. #10

    Mi spiego meglio

    dunque il programma in questione viene tuttora installato su totem per la navigazione guidata (queli che trovi in aeroporto).

    ad oggi quando i commerciali vogliono avviare su i totem il programma di navigazione assistita, entrano nella cartella del programma e registrano il file .reg che va a sostituire il valore explorer.exe nella chiave di registro sopra citata con il percorso del programma da avviare. Quando invece vogliono ripristinare il corretto funzionamento del s/o registrano un secondo file .reg che riscrive il valore explorer.exe nella chiave e riavviando il s/o si avvia tutto normalmente. ORA TUTTO QUESTO FUNZIONA BENISSIMO, MA .....

    nella nuova versione che ho fatto oltre a diverse nuove funzioni mi è stato chiesto di registrare questi due file diversi (ma che vanno a scrivere in sostanza nello stesso punto del registro) tramite la pressione di due bottoni, in un apposito pannello di controllo. Il pannello e tutte le altre modifiche sono pronte , mi manca solo questa roba qui.

    Non posso come suggerisci tu farlo al momento dell'installazione del programma, perchè la cosa deve essere dinamica a piacimento dei commerciali. Quando devono avviare windows cliccando sul bottone dovrà avviarsi il s/o quando dovranno avviare questo programma cliccando sul bottone dovrà avviarsi in shell questo programma....

    come posso risolvere?


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.