Individuare il SID del pc e poi chiudere il file excel

di Anonimizzato13823 il
34 risposte
Chi di voi è in grado di scrivermi una classe in Visual Basic che vada a leggere la chiave SID del sistema operativo Microsoft, la confronti con una stringa e chiuda immediatamente il file Excel contenente tale classe qualora la SID calcolata non coincida con la stringa suddetta?

Vorrei passare un file Excel ad un mio amico ma vorrei che potesse usarlo solo lui e nessun altro.

Ciao

34 Risposte

  • In ogni caso, devi trovare uno che sia in grado e ne abbia voglia ...
  • ultrasound91 ha scritto:


    Ti basta crittografare il file.
    Come si crittografa un file?
  • oregon ha scritto:


    In ogni caso, devi trovare uno che sia in grado e ne abbia voglia ...
    Va bene mi fido ma come posso crittografare un file?
  • ultrasound91 ha scritto:


    Una volta aperto il file excel vai su file -> proteggi cartella di lavoro -> crittografa con password
    No frena! Io desidero avere un file excel che funzioni solo su un preciso computer!
  • ultrasound91 ha scritto:


    Tu hai detto che il problema è:
    fare in modo che solo il tuo amico possa leggere il file
    e hai pensato a un modo.
    Io te ne sto proponendo uno semplice, immediato e gratuito.
    Si e ti ringrazio ma io vorrei che il mio amico non fosse in grado di regalare il programma ad altri. Con il tuo sistema, se ho capito bene, questa cosa non si può fare. L'amico infatti potrebbe passare il file e la password ad un altro suo amico e così via...
  • giannino1995 ha scritto:


    Si e ti ringrazio ma io vorrei che il mio amico non fosse in grado di regalare il programma ad altri. Con il tuo sistema, se ho capito bene, questa cosa non si può fare. L'amico infatti potrebbe passare il file e la password ad un altro suo amico e così via...
    Vediamo di fare chiarezza:
    1) Innanzitutto parliamo di un file, non di un programma, e la differenza non è cosa da poco.

    2) In secondo luogo, quand'anche tu riesca a leggere il SID all'avvio del file Excel del pc corrente, poi come fai a sapere che quel SID è quello del pc del tuo amico?
    Lui te lo dovrebbe comunicare PRIMA, diversamente non vedo come tu possa fare questa verifica.
    Oltretutto non è proprio banale, farlo.

    3) Ma questo punto basterebbe che lui ti fornisse il NOME del computer + il NOME dell'utente, che tu li imposterai come password.
    Lui li dovrà inserire ed a quel punto li confronti con il pc corrente utilizzando semplici variabili di ambiente, recuperate con la funzione Environ(), ad esempio nel mio pc io ottengo questo:
    Dim sComputer As String
    Dim sUtente As String
    sComputer = Environ("COMPUTERNAME") ' risultato: PC-GIORGIO
    sUtente = Environ("USERNAME") ' risultato: giorgio
    imposti la password: PC-GIORGIO-giorgio

    e la confronti con quella inserita dal tuo amico.

    Trovo difficile che un'altra persona vada a modificare il nome del proprio utente e quello del proprio computer solo per aprire il tuo file Excel.
    Attento che potrebbe però modificare temporaneamente le variabili di ambiente.

    Se ti serve una protezione (si fa per dire) più 'seria' allora il metodo corretto è utilizzare le funzion API:
    Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    Private Declare Function GetComputerNameA Lib "kernel32" (ByVal lpBuffer As String, nSize As Long) As Long
    Nel caso, documentati sul web, nel caso tu voglia usarle.
    http://allapi.mentalis.org/apilist/GetUserName.shtm

  • gibra ha scritto:


    giannino1995 ha scritto:


    2) In secondo luogo, quand'anche tu riesca a leggere il SID all'avvio del file Excel del pc corrente, poi come fai a sapere che quel SID è quello del pc del tuo amico?
    Lui te lo dovrebbe comunicare PRIMA, diversamente non vedo come tu possa fare questa verifica.
    Dov'è il problema, l'amico viene a casa con il suo portatile, posso fare tutti gli esperimenti che desidero!
  • gibra ha scritto:


    3) Ma questo punto basterebbe che lui ti fornisse il NOME del computer + il NOME dell'utente, che tu li imposterai come password.
    Lui li dovrà inserire ed a quel punto li confronti con il pc corrente utilizzando semplici variabili di ambiente, recuperate con la funzione Environ(), ad esempio nel mio pc io ottengo questo:
    Dim sComputer As String
    Dim sUtente As String
    sComputer = Environ("COMPUTERNAME") ' risultato: PC-GIORGIO
    sUtente = Environ("USERNAME") ' risultato: giorgio
    imposti la password: PC-GIORGIO-giorgio

    e la confronti con quella inserita dal tuo amico.

    Trovo difficile che un'altra persona vada a modificare il nome del proprio utente e quello del proprio computer solo per aprire il tuo file Excel.
    Troppo semplice, saprei come tergiversare alla protezione io stesso che sono un ignorante.
  • gibra ha scritto:


    Attento che potrebbe però modificare temporaneamente le variabili di ambiente.

    Se ti serve una protezione (si fa per dire) più 'seria' allora il metodo corretto è utilizzare le funzion API:
    Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    Private Declare Function GetComputerNameA Lib "kernel32" (ByVal lpBuffer As String, nSize As Long) As Long
    Nel caso, documentati sul web, nel caso tu voglia usarle.
    http://allapi.mentalis.org/apilist/GetUserName.shtm

    Non capisco cosa intendi dire con le variabili di ambiente. Il codice che hai scritto usando le API cosa dovrebbe fare?

    P.S.: In una discussione in inglese che ho letto ieri si diceva che bisognerebbe registrare una dll, ma non capisco nè il principio di funzionamento e nè saprei come farlo.

    P.S.2: Che importa che sia un'operazione complessa, ci siete voi ad aiutarmi!!!
  • giannino1995 ha scritto:


    Non capisco cosa intendi dire con le variabili di ambiente.
    Se no lo sai devi documentarti.

    giannino1995 ha scritto:


    Il codice che hai scritto usando le API cosa dovrebbe fare?
    Non ho usato le API. E' puro codice VB.
    Le API sono quelle linkate.

    giannino1995 ha scritto:


    P.S.: In una discussione in inglese che ho letto ieri si diceva che bisognerebbe registrare una dll, ma non capisco nè il principio di funzionamento e nè saprei come farlo.
    Macché registrare DLL!!! Stanno farneticando (o non hanno capito nulla).
    Lascia perdere per carità...

    giannino1995 ha scritto:


    P.S.2: Che importa che sia un'operazione complessa, ci siete voi ad aiutarmi!!!
    Attento, un forum da aiuto, spunti e suggerimenti, ma poi sei tu che devi andare a documentarti sugli argomenti proposti.
    Un forum NON è e non può essere un tutor.

  • A parte il fatto che non otterrai un "codice pronto all'uso" (qui non siamo al tuo servizio), mi sembra anche una perdita di tempo perché, qualsiasi meccanismo tu metta in piedi, è superabile, se si vuole, in pochissimo tempo.
  • gibra ha scritto:


    Attento, un forum da aiuto, spunti e suggerimenti, ma poi sei tu che devi andare a documentarti sugli argomenti proposti.
    Un forum NON è e non può essere un tutor.
    Questa volta non mi siete stati di aiuto, evidentemente non conoscete la soluzione.

    Io avevo pensato ad una funziona con un semplice If di questo tipo:

    "se il SID è del pc dell'amico OK altrimenti chiudi il programma"

    Si tratta di una manciata di righe di codice, evidentemente non sapete farlo, non mi sembra una cosa così complessa.
  • oregon ha scritto:


    A parte il fatto che non otterrai un "codice pronto all'uso" (qui non siamo al tuo servizio), mi sembra anche una perdita di tempo perché, qualsiasi meccanismo tu metta in piedi, è superabile, se si vuole, in pochissimo tempo.
    Non siete in grado, si parla di una manciata di righe di codice. Non serve neppure una classe!
  • Non siete in grado, si parla di una manciata di righe di codice.
    Siamo "abbastanza" adulti e vaccinati per non cadere su queste ridicole provocazioni ...

    Qui è VIETATA la pappa pronta. Ti serve? Fai una richiesta ad un programmatore (c'è la sezione in questo forum) e pagalo ...
    "se il SID è del pc dell'amico OK altrimenti chiudi il programma"
    Ecco ... fallo così ...
Devi accedere o registrarti per scrivere nel forum
34 risposte