Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [VB2010] Chi è il CurrentUser?

    Se installo un programma (con permessi di amministratore perché creo alcune chiavi di registro) come Utente Principale (chiamiamo così l' amministratore) e nel programma scrivo:

    codice:
    Dim MyFolder As String = My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData
    MessageBox.Show(MyFolder)
    effettivamente il percorso è corretto ed il CurrentUser è l' Admin.

    Però se cambio utente (senza permessi di amministratore) e reinstallo il programma (affinché ogni utente abbia i suoi settaggi specifici) durante l' installazione mi si chiede il permesso di installare come amministratore... ed il percorso visualizzato nella MessageBox rimane quello dell' amministratore, anche se sono loggato come altro utente.....

    Ma allora il CurrentUser chi è? Chi installa o l' Utente al momento loggato?

  2. #2
    Se lo esegui con le credenziali di amministratore, il current user è l'amministratore...

    (anche se, se non ricordo male, esistono livelli di "impersonazione", non so come si ponga il .NET Framework rispetto ad essi)
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    se ti servono valori di sistema legati all'utente (e di certo My.Computer.FileSystem.SpecialDirectories.CurrentU serApplicationData lo è) ricavali a runtime, non all'atto dell'installazione; altrimenti se si logga un altro utente il programma non funziona più

  4. #4
    Originariamente inviato da optime
    se ti servono valori di sistema legati all'utente (e di certo My.Computer.FileSystem.SpecialDirectories.CurrentU serApplicationData lo è) ricavali a runtime...
    Certo che li ricavo ANCHE a runtime.

    Ma durante l' installazione devo inserire nella cartella "Roaming" di ciascun user un file .mdb, inserito nell' installer, relativo appunto a ciascun user e che poi ciascun user manipolerà a runtime (il suo e solo il suo, ovviamente).

    Installo con l' eccellente InnoSetup... mò guardo se trovo qualche codice (in Pascal, che non mastico) che rilevi il CurrenUser PRIMA di iniziare l' installazione (cioè prima che siano richiesti permessi di amministratore)... saprò dire....

  5. #5
    oppure

    1. all'installazione metti l'mdb in una cartella neutra
    2. a runtime, controlli se l'mdb esiste nella cartella utente, altrimenti lo copi dalla cartella neutra


  6. #6
    Originariamente inviato da optime
    oppure
    1. all'installazione metti l'mdb in una cartella neutra
    2. a runtime, controlli se l'mdb esiste nella cartella utente, altrimenti lo copi dalla cartella neutra
    Si, ci ho pensato. Però non è un lavoro "pulito", nel senso che (non succederà MAI ma "teoricamente" potrebbe succedere) se uno installa oggi e lancia poi il programma dopo una settimana e nel frattempo l' admin ha pulito i temporanei con CCleaner... ecco il pasticcio.

    Rimediabile con un MessageBox, ovviamente... ma, come dicevo, non è un lavoro "a prova di errore". Se trovo il modo di rilevare 'sto cavolo di CurrentUser PRIMA che venga chiesto il permesso di Admin ed installare i files durante il setup, preferisco.

  7. #7
    Perché dovresti metterlo nei file temporanei (che tra l'altro non sono condivisi tra i vari utenti)? Mettilo nella directory di installazione del programma, in modo che sia leggibile da tutti, non modificabile e rimosso automaticamente alla disinstallazione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Originariamente inviato da MItaly .. Mettilo nella directory di installazione del programma, in modo che sia leggibile da tutti, non modificabile...
    Ma il file .mdb DEVE essere modificabile, quindi ogni utente deve avere il suo ed il posto più appropriato, IMHO, è una sottocartella della cartella Roaming del singolo utente...

    Inoltre essendo un file di dati, se non viene rimosso alla disinstallazione tanto meglio.

  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Quando tu parli di utenti vari, mi pare che tu ti stia riferendo a più utenti dello stesso computer, giusto?

    Se così, allora devi installare il programma quando sei loggato come amministratore;
    inoltre devi impostare che il tue setup installi il tuo database MDB nella cartella del programma, per intenderci:

    C:\Program Files\CartellaTuaApplicazione\FILE.MDB

    Poi, quando l'utente avvierà il programma, questo dovrà andare a controllare se esiste il FILE.MDB nella cartella dell'utente corrente:

    My.Computer.FileSystem.SpecialDirectories.CurrentU serApplicationData

    Ovviamente alla prima esecuzione il file non c'è, allora devi progettare il tuo programma in modo che ve lo copi, ma sempre e solo se il file non esiste già.


  10. #10
    gliel'abbiamo detto in tre persone

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 © 2026 vBulletin Solutions, Inc. All rights reserved.