Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 34
  1. #1
    Utente di HTML.it L'avatar di rs125
    Registrato dal
    May 2008
    Messaggi
    193

    [VB6] Problema chiave di registro binaria

    Salve ragazzi,ho un problema:
    Scrivo tramite codice ed interfaccia una chiave di registro binaria utilizzando questo codice:

    Const HKEY_LOCAL_MACHINE = &H80000002

    Dim objreg As Object
    Dim uBin As Variant
    Dim sPath As String

    Set objreg = GetObject("Winmgmts:root\default:StdRegProv")
    sPath = "SOFTWARE\TuaChiave"

    uBin = Array(7, 0, 0, 0, 16, 1, 0, 0, 4, 1, 0, 0, 12, 1, 0, 0, 13, 1, 0, 0, 14, 1, 0, 0)
    objreg.SetBinaryValue HKEY_LOCAL_MACHINE, sPath, "ChiaveBinaria", uBin
    Ora il valore uBin devo deciderlo io tramite una textbox,qualcuno mi spiega gentilmente come si fa?perchè non ci riesco proprio. Riesco a fare tutto tramite textbox ma questo no.grazie

    PS: Con lo stesso codice,ma cambiando solo HKEY_LOCAL_MACHINE in HKEY_CURRENT_USER perchè non mi scrive le chiavi in quella parte di registro?aiuto...vi prego!

  2. #2
    Utente di HTML.it L'avatar di rs125
    Registrato dal
    May 2008
    Messaggi
    193
    Nessuno ha risposte??

  3. #3
    Prova con questo:
    codice:
    Dim regkey As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey( "Software\Test")
    Dim b() As Byte = {0, 2, 0, 1, 1, 1}
    regkey.SetValue("Valore", b)

  4. #4
    Utente di HTML.it L'avatar di rs125
    Registrato dal
    May 2008
    Messaggi
    193
    Non funziona la soluzione da te elencata.Come diavolo si fa??

  5. #5
    Originariamente inviato da rs125
    Non funziona la soluzione da te elencata.Come diavolo si fa??
    Quanto dici non è vero:
    ho creato un nuovo progetto visual basic (2008 ma credo che funzioni anche sui precedenti)
    inserito un bottone e il codice sull'evento click.
    La prima volta funziona correttamente
    Ho provato anche con c#
    codice:
    RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\Test");
    byte[] b = {0, 2, 0, 1, 1, 1};
    regkey.SetValue("Valore", b);
    Che è la traduzione in c# di quanto suggerito per vbnet

  6. #6
    Originariamente inviato da Cteniza
    Quanto dici non è vero:
    ho creato un nuovo progetto visual basic (2008 ma credo che funzioni anche sui precedenti)
    Su VB6 non può funzionare, per il semplice fatto che non esiste nessuna delle classi che usi nel tuo esempio.
    @rs125: io non userei un array inserito in un Variant, ma un normale array di Byte.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Originariamente inviato da MItaly
    Su VB6 non può funzionare, per il semplice fatto che non esiste nessuna delle classi che usi nel tuo esempio.
    @rs125: io non userei un array inserito in un Variant, ma un normale array di Byte.
    Purtroppo non mi ero accorto del tag vb6

    Per farmi perdonare progetto di esempio in vb6 (avverto che non l'ho mai provato e che ovviamente non è mio)

  8. #8
    Utente di HTML.it L'avatar di rs125
    Registrato dal
    May 2008
    Messaggi
    193
    Purtroppo non mi ero accorto del tag vb6

    Per farmi perdonare progetto di esempio in vb6 (avverto che non l'ho mai provato e che ovviamente non è mio)
    Infatti Cteniza...l'ho scritto grande [VB6]...proprio per questo motivo

    Cmq grazie mille ugualmente,ora provo il tuo esempio...

    Per quanto riguarda MItaly, come si fa un normale array di Byte?siccome mi sono fermato con la programmazione,ora ho ripreso ma non ero tanto esperto,avevo fatto poco.

    Tu con la programmazione di rete come sei messo??

  9. #9
    Utente di HTML.it L'avatar di rs125
    Registrato dal
    May 2008
    Messaggi
    193
    Diciamo che ho quasi risolto ed il mio scrittore di registro è pronto.Io ho fatto così dopo qualche modifica nel codice:

    Private Sub WshShell_BINARY_HKLM()

    On Error Resume Next
    Const HKEY_LOCAL_MACHINE = &H80000002

    Dim objreg As Object
    Dim uBin As Variant

    Set objreg = GetObject("Winmgmts:root\default:StdRegProv")

    uBin = Array(Txt3.Text)
    objreg.CREATEKEY HKEY_LOCAL_MACHINE, Txt1.Text
    objreg.SetBinaryValue HKEY_LOCAL_MACHINE, Txt1.Text, Txt2.Text, uBin
    End Sub
    Vedete la parte in rosso??è il valore della chiave binaria. Ora affinchè dalla textbox gli scrivo 1 oppure 01 lui scrive nel registro,ma quando gli dico 01 00 05 ecc... non mi scrive più.

    Che forma devo utilizzare??nel senso che per scrivere un valore binario come devo fare??1,2,3,4.... oppure 01 02 03 04 ecc... o come??

  10. #10
    Originariamente inviato da rs125
    Per quanto riguarda MItaly, come si fa un normale array di Byte?siccome mi sono fermato con la programmazione,ora ho ripreso ma non ero tanto esperto,avevo fatto poco.
    codice:
    Dim b(4) As Byte
    b(0) = 0
    b(1) = 10
    b(2) = 4
    b(3) = 4
    b(4) = 6
    Tu con la programmazione di rete come sei messo??
    Maluccio.
    ---EDIT---
    Ops, avevo capito male il problema... be', in primo luogo devi decidere come far inserire il valore binario all'utente (io opterei per valori esadecimali separati da spazi), quindi quando l'utente decide di inserire il valore devi effettuare il parsing della stringa ed inizializzare l'array di conseguenza.


    Per la faccenda dell'HKEY_CURRENT_USER, devi prima definire la costante:
    codice:
    Const HKEY_CURRENT_USER = &H80000001
    , altrimenti VB si inventa una variabile HKEY_CURRENT_USER inizializzata a 0 (per questo ti consiglio di inserire in testa a tutti i file la riga
    codice:
    Option Explicit
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

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.