Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VB.NET] Problemi di creazione

    Salve ragazzi,

    ho un fastidioso problema. Vendo subito al dunque: nella rete della mia scuola, ogni PC è collegato al server principale, che contiene varie cartelle. Alcune di esse permettono la scrittura, altre meno. Dato che ogni PC non è collegato agli altri in alcun modo, mi sono creato un programmino semplice semplice che, detto molto brevemente, permette di chattare tra PC sfruttando la creazione di un file (salvato in una delle cartelle aperte alla scrittura). In locale funziona tutto correttamente. Il problema lo riscontro quando avvio il programma in rete, nello specifico ricevo un errore nell'istante in cui il programma deve creare il file inesistente (o comunque scriverci dentro). La cosa strana è che se invece compio queste operazioni manualmente, non ho problemi.

    C'è modo di sorpassare questo problema? O vie alternative?

    Grazie mille anticipatamente a tutti.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Hai descritto il problema genericamente. Cosi' non ti si puo' rispondere con una soluzione specifica.

    Per farlo, devi dire

    1) il tuo programma sta in locale sul disco di ogni PC o su uno share di rete?

    2) quale errore (codice e descrizione) ti viene evidenziato?

    3) quale codice utilizzi per la creazione e in quale riga hai l'errore?

    4) quando esegui il programma sul PC, lo fai con l'utente che ha anche il permesso di scrittura su share?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ciao oregon,

    1) Il programma risiede in una cartella condivisa in rete, e da lì viene aperto dagli utenti di altri PC;
    2) Purtroppo ero a scuola e non ho potuto copiare l'errore, era un messaggio bello corpulento. Comunque si evinceva che era un problema di IO;
    3) Le funzioni principali d'Input/Output sono:
    codice:
     Public Function doesExist() As Boolean
    
            If System.IO.File.Exists("test.zip") = True Then
                Return True
            Else
                Return False
            End If
    end function
    codice:
        Public Sub createFile()
    
            'Dim file As System.IO.FileStream ' SE NON C'E', CREO
            'file = System.IO.File.Create("test.zip")
    
            Using sw As StreamWriter = New StreamWriter("test.zip")
    
                sw.Close()
            End Using
    
    
        End Sub
    codice:
        Private Sub eraseFile()
    
            Dim objWriter As New System.IO.StreamWriter("test.zip") ' APRO, SCRIVO, CHIUDO
            objWriter.Write("")
            objWriter.Close()
    
        End Sub
    codice:
        Public Function vuoto() As Boolean
    
            If FileLen("test.zip") > 0 Then
                Return False
            Else
                Return True
            End If
    
        End Function
    Robe molto semplici mi pare.

    4) Quando eseguo il file, sì, sono come utente normale (non amministratore ma utente limitato), che come dicevo nel post precedente, ha i pieni diritti di scrivere/aprire/chiudere/modificare i files della cartella condivisa manualmente senza alcun problema. Ripeto, l'errore si verifica solo e solo se avvio il programma quando è situato in Rete.

    Grazie comunque per la risposta celere oregon.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il programma risiede in una cartella condivisa in rete, e da lì viene aperto dagli utenti di altri PC;
    Molto probabilmente questo e' il problema ... se l'eseguibile .NET e' in rete, allora la sua esecuzione, per questioni di sicurezza, è sottoposta a particolari regole ...

    Leggi questo post

    http://forum.html.it/forum/showthrea...readid=1117780

    e il tutorial di MItaly di cui trovi il link in una delle risposte ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Originariamente inviato da oregon
    Molto probabilmente questo e' il problema ... se l'eseguibile .NET e' in rete, allora la sua esecuzione, per questioni di sicurezza, è sottoposta a particolari regole ...

    Leggi questo post

    http://forum.html.it/forum/showthrea...readid=1117780

    e il tutorial di MItaly di cui trovi il link in una delle risposte ...
    Grazie mille. Data l'entità dei problemi, non penso di riuscire a risolvere come si deve. Secondo te, quindi, se rifarei questo programma (niente di che) in C++ non dovrei riscontrare più tale problema?

  6. #6
    Non lo dovresti riscontrare, ma sistemare il problema non è così complicato... data una volta la fiducia alla tua strong name key puoi distribuire tutti gli eseguibili che vuoi con quella firma senza problemi.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Originariamente inviato da MItaly
    Non lo dovresti riscontrare, ma sistemare il problema non è così complicato... data una volta la fiducia alla tua strong name key puoi distribuire tutti gli eseguibili che vuoi con quella firma senza problemi.
    A essere sinceri non mi è chiarissimo come fare per dare la fiducia. È una modifica da apportare solo al programma? Saresti così gentile da spiegarmi l'essenziale?

    Vi ringranzio ancora.

  8. #8
    C'è tutto spiegato nel tutorial in questione; l'ho scritto apposta per non dover rispiegare cento volte le stesse cose. Leggiti il pdf completo e se hai ancora dubbi non esitare a chiedere.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Ok, grazie mille! Un ultima domanda: se in futuro volessi fare programmi simili ma con Visual C++ (2008), il programma in questione conterrebbe ancora il .NET Framework 3.5, o la faccenda del CAS riguarda solo linguaggi Microsoft come il VB e C#?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da aur0n
    Ok, grazie mille! Un ultima domanda: se in futuro volessi fare programmi simili ma con Visual C++ (2008), il programma in questione conterrebbe ancora il .NET Framework 3.5, o la faccenda del CAS riguarda solo linguaggi Microsoft come il VB e C#?
    La questione e' legata al sistema di sicurezza degli eseguibili .NET.

    Quindi e' limitata a TUTTI i linguaggi che usano il framework .NET (non solo VB.NET e C#).
    Potrebbe quindi valere per C++.NET o per altri ma NON VALE per il C/C++ nativo, VB6, Delphi e i linguaggi che producono codice nativo ...
    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.