Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    17

    VB.NET Eliminare chiavi dal registro / collegamento winsock

    Ciao, sto lavorando da un po' ad un programma client/server in vb.net, utilizzando i Winsock ed ho due domande da farvi:

    1) Il programma aggiunge una chiave al registro di sistema che serve per avviarlo all'avvio di windows. Volevo sapere il codice per eliminare una chiave dal registro di sistema, in modo che dal client schiaccio "Elimina server" ed il server elimina la chiave per l'avvio automatico + i suoi files.

    2) Per rendere possibile utilizzare il server anche a chi ha un router/firewall che blocca le porte, ho invertito il codice dei winsock e adesso è il server che contatta il client. Però è sorto un problema: Se avvio prima il server, esso tenta di collegarsi al client, ma il client non è avviato e quindi non si collega anche se rimane aperto senza dare errori.
    Vorrei fare in modo che appena apro il client, mi appaia un form con gli IP dei server accesi e io posso scegliere quale connessione accettare, ma se il server viene avviato prima del client; il client non trova nessuna connessione. Sapete come posso risovere questo problema? Grazie.

  2. #2

    Re: VB.NET Eliminare chiavi dal registro / collegamento winsock

    Originariamente inviato da samu0797
    Ciao, sto lavorando da un po' ad un programma client/server in vb.net, utilizzando i Winsock ed ho due domande da farvi:

    1) Il programma aggiunge una chiave al registro di sistema che serve per avviarlo all'avvio di windows. Volevo sapere il codice per eliminare una chiave dal registro di sistema, in modo che dal client schiaccio "Elimina server" ed il server elimina la chiave per l'avvio automatico + i suoi files.

    2) Per rendere possibile utilizzare il server anche a chi ha un router/firewall che blocca le porte, ho invertito il codice dei winsock e adesso è il server che contatta il client. Però è sorto un problema: Se avvio prima il server, esso tenta di collegarsi al client, ma il client non è avviato e quindi non si collega anche se rimane aperto senza dare errori.
    Vorrei fare in modo che appena apro il client, mi appaia un form con gli IP dei server accesi e io posso scegliere quale connessione accettare, ma se il server viene avviato prima del client; il client non trova nessuna connessione. Sapete come posso risovere questo problema? Grazie.
    Benvenuto nel forum di HTML.it

    2) non è questo il sistema: devi escludere dal controllo del router/firewall la tua applicazione manualmente; il server "deve fare" il server e non il client..

    1) domanda chiesta più volte nel forum, in ogni caso ti posto un link con un mini-tutorial fatto molto bene:
    http://www.codeproject.com/KB/vb/registry_with_vb.aspx


    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    17
    Grazie del tutorial sul registro di sistema , ma quello di escludere il server dal router MANUALMENTE è appunto quello che non voglio fare.. Adesso anche se c'è un firewall il server va, il mio problema è quello di farlo connettere al client. avevo pensato di mettere un timer:
    codice:
    AxWinsock1.Connect(ip.Text, porta.text)
    If AxWinsock1.Connect Then Timer1.Enabled = False
    In modo che provi a connettersi sempre e appena si connette smette di provare, ma il codice è sbagliato .. Com'è l'evento di connessione del Winsock? E secondo voi può funzionare così?

  4. #4
    Originariamente inviato da samu0797
    Grazie del tutorial sul registro di sistema , ma quello di escludere il server dal router MANUALMENTE è appunto quello che non voglio fare.. Adesso anche se c'è un firewall il server va, il mio problema è quello di farlo connettere al client. avevo pensato di mettere un timer:
    codice:
    AxWinsock1.Connect(ip.Text, porta.text)
    If AxWinsock1.Connect Then Timer1.Enabled = False
    In modo che provi a connettersi sempre e appena si connette smette di provare, ma il codice è sbagliato .. Com'è l'evento di connessione del Winsock? E secondo voi può funzionare così?
    E perchè non vorresti farlo manualmente?

    Comunque ora la domanda è un'altra: come connettersi. Innanzitutto penso che tu stia usando il componente Winsock, se è così te lo sconsiglio caldamente: potresti avere problemi di compatibilità con in vari framework quindi, visto che sei in ambiente .NET usa le System.Net.Sockets. Fai una ricerca sul forum, è un argomento trattato molte volte.
    Per inciso: l'idea del Timer è alquanto folle..che significa "si connette sempre"?

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    17
    Il mio problema è che se non avvio prima il client poi non riesco più a stabilire una connessione. Il server prova a connettersi ma il client è chiuso e non succede niente, se invece un timer provasse a connettersi finche la connessione non viene stabilita avrei risolto.

    Avevo sentito parlare delle System.Net.Sockets ma non le ho mai usate, sapevo che possono essere usate per inviare/ricevere messaggi. Faccio una ricerca per schiarirmi le idee hanno più o meno le solite funzioni dei Winsock? E soprattutto posso fare in modo che sia il pc remoto a collegarsi a me in modo da evitare problemi con router/firewall?

  6. #6
    Originariamente inviato da samu0797
    Il mio problema è che se non avvio prima il client poi non riesco più a stabilire una connessione. Il server prova a connettersi ma il client è chiuso e non succede niente, se invece un timer provasse a connettersi finche la connessione non viene stabilita avrei risolto.
    Ti ripeto che il Server sta in "ascolto" mentre i vari Client tentano la connessione. Questo è il meccanismo giusto. Se poi ha intenzione di implementare una connessione ogni tot di minuti allora l'idea del Timer è corretta; diventa scorretta se vuoi "forzare" un'unica connessione, cioè per tentare finchè non si ha la connessione.


    Originariamente inviato da samu0797
    Avevo sentito parlare delle System.Net.Sockets ma non le ho mai usate, sapevo che possono essere usate per inviare/ricevere messaggi. Faccio una ricerca per schiarirmi le idee hanno più o meno le solite funzioni dei Winsock?
    Certo, è sempre comunicazione tramite protocolli UDP o TCP/IP ma la sintassi è molto diversa.


    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    17
    Comunque forse ciò che voglio è fare da server e accettare le connessioni degli altri, ma "voglio comandare io" Ora cercherò delle guide sulle System.Net.Sockets per capire meglio Grazie del tuo aiuto per adesso

  8. #8
    Originariamente inviato da samu0797
    Grazie del tuo aiuto per adesso
    Prego..quando vuoi siamo qua


    Ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    17
    Beh mi trovo bene utilizzando le System.Net.Socket grazie per avermele suggerite ^^
    Però ho un problema con il registro di sistema:
    Nel Public Class Form1 c'è:
    codice:
    Dim regkey As RegistryKey
    Nel Form1_Load:
    codice:
    regkey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
            regkey.SetValue(Name, Application.ExecutablePath)
            regkey.Close()
    E all'avvio dell'applicazione la chiave per l'avvio automatico viene aggiunta, ma quando il server esegue:
    codice:
    regkey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run")
                        regkey.DeleteSubKey(Name, Application.ExecutablePath)
                        regkey.Close()
    La chiave non viene eliminata..
    Ho provato anche
    codice:
    regkey.DeleteValue(Name, Application.ExecutablePath)
    Ma la chiave non viene eliminata lo stesso.. Dove sbaglio?

  10. #10
    Ma la tua chiave è l'ultima oppure ha delle subkeys ?

    Ho visto che hai provato DeleteValue: questo metodo serve per eliminare i dati, non le chiavi.

    Ecco il link alla documentazione MSDN: http://msdn.microsoft.com/it-it/libr...32.registrykey


    Ciao

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.