Come aggiungere un collegamento di avvio a un utente che non ha mai effettuato l'accesso (profilo non creato)?


0

Attualmente sto installando il mio software sotto un account amministratore, alla fine del processo ho bisogno di aggiungere un collegamento di avvio a UserX, tuttavia questo UserX non ha ancora effettuato l'accesso al sistema e quindi non esiste un profilo per loro in \ USERS \ ( o cartella equivalente a seconda della versione di Windows).

C'è qualche suggerimento o soluzione per questo? Oggi devo posizionarlo sotto AllUsers ma questo ha l'effetto collaterale negativo dell'avvio dell'applicazione quando accedo all'account ADMIN (che è completamente sbagliato).

Attualmente ho bisogno di supportare Windows XP, 7 e 10.

Oggi uso un VBScript con WMI per scorrere le liste dei profili (sotto HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList) per trovare il mio utente (che non c'è ancora) e usare objWshShell.CreateShortcut con i percorsi corretti - funziona alla grande se esiste il profilo utente e anche per AllUser, ma non riesco a trovare una soluzione per il caso in cui l'utente non abbia mai effettuato l'accesso (come un utente DOMAIN, che è la mia preoccupazione principale).

Qualsiasi idea sarebbe molto apprezzata. Grazie,

Risposte:


1

Non è possibile aggiungere una scorciatoia a un utente inesistente, quindi la strada da percorrere è di avviarla ad ogni avvio e determinare se lo script è stato eseguito prima o no.

Puoi farlo inserendo un valore nel registro o inserendo un file nella loro directory dei profili (opzione migliore) e verificarne l'esistenza.

Se per qualche motivo hai bisogno di riavviare lo script a tutti, devi semplicemente rimuovere il valore dal registro o dalla loro directory del profilo.

Funziona grazie alla seguente tecnica.

Quando un utente effettua l'accesso per la prima volta, la prima cosa che viene eseguita è la seguente: una cartella del profilo viene creata localmente, una esistente viene sincronizzata dal server.

Ciò è necessario perché le installazioni, ecc., Che si verificano durante l'accesso, devono essere presenti e altre impostazioni come i criteri di gruppo sono memorizzate anche lì.

Lo script di accesso viene eseguito alla fine del login e, a questo punto, esiste la directory del profilo.

Ora, dato che questa è la prima volta che viene eseguito, verifica il file: % Appdata% \ installed.dat può essere usato per vedere se lo script è stato eseguito prima o no. Il primo login, quel file non è lì, quindi lo script continua a fare le sue cose e l'installazione. Alla fine, creiamo il file % Appdata% \ installed.dat e la sceneggiatura termina normalmente.

All'accesso successivo, tutti i file esistono già, quindi durante l'accesso viene eseguita la sincronizzazione con il server. Aggiornerà tutte le modifiche, ma anche il file installed.dat verrà sincronizzato, quindi lo script di accesso ora troverà il file e potrà abortire lo script invece di eseguire un'altra installazione.

E, naturalmente, oltre a controllare se questo è installato per l'utente che utilizza il file installed.dat, è anche possibile verificare se è installato localmente (i file sono presenti in "Programmi"?

Ciò assicurerebbe che quando un utente accede a un nuovo computer, ma con un profilo esistente utilizzando il profilo mobile e l'installazione sia avvenuta nel suo profilo, non accade nulla, tranne se il programma richiesto localmente non è installato.


"inserendo un file nella loro directory profilo" - l'OP ha detto nella domanda "non esiste un profilo per loro sotto \ USERS \ (o una cartella equivalente a seconda della versione di Windows)."
DavidPostill

@DavidPostill Non ancora. Ma l'utente effettua l'accesso, la cartella del profilo viene creata e lo script per tutti gli utenti può quindi inserire qualcosa nel proprio percorso del profilo e verificare anche l'esistenza di questo file. Ho usato questa tecnica da solo prima quindi so che è solido.
LPChip

OK. Potrebbe valere la pena di chiarire che nella tua risposta :)
DavidPostill

@DavidPostill ci vai. :)
LPChip

0

Se si dispone di Active Directory e di una configurazione pulita, è possibile assegnare script di avvio a Unità organizzative. Se si dispone di un'unità organizzativa utente generale, è possibile seguirli Istruzioni assegnare uno script di avvio a quel gruppo.


Ciò non impedirà l'esecuzione dello script due volte se l'utente si disconnette e si riavvia nuovamente prima che l'utente non fosse assegnato da tale unità organizzativa.
LPChip

0
  1. Se conosci il SID dell'utente, e se \HKEY_USERS\ SID esiste, vai a
    \HKEY_USERS\ SID  \ Software \ Microsoft \ Windows \ CurrentVersion 
    e mettere qualcosa dentro Run o RunOnce.
  2. Metti un file batch che assomiglia
    if %username% ==  & Lt; the_user's_name & gt;  (  eseguire il programma  ) 
    nella cartella di avvio AllUsers.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.