Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    156

    [C++]Aprire file hosts in append (CLR)

    Sto cercando di creare un programma in visual c++ 2010 (su windows 7 64 bit) che mi permetta di accedere facilmente al file

    "C:\Windows\System32\drivers\etc\hosts"

    per bloccare o sbloccare siti internet. Intanto sto focalizzando l'attenzione sulla scrittura in append sul file per aggiungere un nuovo sito da bloccare.
    il sito lo scrive l'utente in una textbox ("sito") e coferma con il bottone ok ("button1")

    ecco le parti salienti

    codice:
    private:
    		StreamWriter^ sw;
    
    //.....
    //.....
    
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
    sw = File::AppendText( "C:\Windows\System32\drivers\etc\hosts" );   }
    
    
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    				 sw->WriteLine( "127.0.0.1");
                                     sw->WriteLine( sito->Text );
    				 sito->Text="";
    
    }
    ma il file non viene nemmeno toccato.

  2. #2
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Probabilmente non hai i permessi per aprire quel file.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    156
    Originariamente inviato da Who am I
    Probabilmente non hai i permessi per aprire quel file.
    si, li ho impostati manualmente

  4. #4
    NOn so.... intanto prova a fare Flush e Close (cose che devi sempre fare per svuotare buffer e chiudere il file) dopo i WriteLine. Forse le stringhe sono rimaste nel buffer e non sono state scritte nel file.

    Oppure non hai i permessi.. che significa che glieli hai dati tu?
    Quello ha l'attributo file di sistema, e non lo puoi togliere manualmente (da esplora risorse).. devi usare una funzione oppure lo fai da riga di comando con attr. Non basta rimuovere sola lettura.
    lolide
    Java Programmer

    Informati

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il codice corretto è

    codice:
    sw = File::AppendText( "C:\\Windows\\System32\\drivers\\etc\\hosts" );
    e

    codice:
    sw->Write( "127.0.0.1   ");
    sw->WriteLine( sito->Text );
    sw->Close();
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    156
    Originariamente inviato da oregon
    Il codice corretto è

    codice:
    sw = File::AppendText( "C:\\Windows\\System32\\drivers\\etc\\hosts" );
    e

    codice:
    sw->Write( "127.0.0.1   ");
    sw->WriteLine( sito->Text );
    sw->Close();
    Come sempre sei riuscito ad individuare il problema, grazie .

    in effetti se mettevo un solo \ mi considerava \+carattere dopo come un tutt'uno (tipo quando nelle applicazioni console scrivevo \n per andare a capo)

    piuttosto, sai dirmi come mai alcuni siti, anche se scritti in quel file, non vengono bloccati dal firewall? (uso chrome)

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Per i doppi slash, se programmi in C/C++ saprai (o dovresti sapere) cosa sono le "sequenze di escape" nelle stringhe costanti.

    Per la Write, dovresti tenere presente che nel file hosts le informazioni devono andare sulla stessa linea, ad esempio

    127.0.0.1 sito

    e non su due linee diverse.

    Cosa molto più importante, è la Close del file, senza la quale le informazioni non sono scritte sul file stesso.

    E tieni presente che la Open non va nella Load ma nell'evento Click dato che il file viene chiuso.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    6
    Originariamente inviato da oregon
    Per i doppi slash, se programmi in C/C++ saprai (o dovresti sapere) cosa sono le "sequenze di escape" nelle stringhe costanti.

    Per la Write, dovresti tenere presente che nel file hosts le informazioni devono andare sulla stessa linea, ad esempio

    127.0.0.1 sito

    e non su due linee diverse.

    Cosa molto più importante, è la Close del file, senza la quale le informazioni non sono scritte sul file stesso.

    E tieni presente che la Open non va nella Load ma nell'evento Click dato che il file viene chiuso.
    Grazie. [img*]http:/no spam!!!fo/g.gif[/img]

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    156
    Originariamente inviato da whileness
    Grazie.
    anche tu problema simile?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Rising1
    anche tu problema simile?
    No ... sono messaggi random per spam ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.