Oppure

Loading
23/01/15 18:29
Roby94
Buonasera, in attesa di risposte in un altro topic vorrei chiedervi aiuto su un problema.
Ho un servizio che si avvia in automatico sotto win8.1, si connette al registro per delle impostazioni e comunica su una porta seriale. Ho delle difficoltà nella lettura del registro.
In fase di chiusura vado a scrivere nel registro le impostazioni modificate dal servizio
this.registryKey = Registry.CurrentUser.CreateSubKey(@"software\CLC");
this.registryKey.SetValue("Mode", (int)this.Mode);

Se mi reco però nel registro le chiavi non vengono create, ma se per caso le provo a leggere dal servizio con
foreach(string s in this.registryKey.GetValueNames()) Debug.WriteLog(s);

Questo me le stampa senza problemi, come mai? Per caso perché sto salvando le impostazioni in una sezione user differente da quella in cui apro il regedit, possibile? Se invece cerco di scrivere in local machine mi viene notificata l'insufficienza di permessi.
Come mi devo comportare?

Grazie
aaa
31/01/15 1:47
darioza
Ciao, ammesso che è tardi, ma che non vedo nulla di strano, infatti la chiave, se funziona viene salvata esattamente dove gli stai dicendo, prova a salvare una chiave con un valore particolare e a cercarla nel registro, cosi ti rendi conto del "problema"...
aaa
31/01/15 9:55
Roby94
I servizi di default vengono istallati sotto un utente virtuale chiamato "Servizio locale" ma questo mi limita dal punto di vista del registro, in quanto la key principale CurrentUser corrisponde a quella del servizio locale e non dell'utente corrente, questo è un problema, ho bisogno di poter accedere anche con un applicazione a interfaccia utente ai dati nel registro, per il momento ho risolto installando il processo sotto il mio account ma questo non va bene se vi sono piu utenti.
aaa
31/01/15 16:30
darioza
allora...
per scrivere in HKLM bisogna avere o acquisire i permessi di amministratore, e fino a qui non ci piove.
Non ho capito il problema però...
è un servizio multi utente a livello macchina?
nel senso il problema si verifica con l'accesso dell'utente locale?
aaa
31/01/15 18:51
Roby94
No il problema è che il servizio può accedere SOLO alle sotto chiavi di HKEY_CURRENT_USER dell'utente servizio locale, l'interfaccia utente invece è condizionata dal account con cui si è eseguito il login, quindi all'atto pratico il servizio e l'interfaccia utente non possono condividere una chiave presente in HKEY_CURRENT_USER visto che questi presentano degli hive diversi, vorrei spostare le chiavi di configurazione in HKEY_LOCAL_MACHINE cosi da non avere limitazioni legate all'utente, il problema sta nel fatto che il servizio non puo essere eseguito con i privilegi d'amministratore. Quindi o trovo il modo per scrivere in HKEY_LOCAL_MACHINE oppure da interfaccia utente devo riuscire ad accedere all'hive contenente HKEY_CURRENT_USER di servizio locale.
aaa
31/01/15 22:57
darioza
..Cambiare approccio?
nel senso, non usare il registro per salvare le chiavi?
altrimenti devi usare permessi amministrativi per forza, potrei sbagliare, ma non penso neanche che qualche API possa aiutarti...
aaa
31/01/15 23:07
Roby94
Preferirei il registro, la sua struttura ad albero mi è molto comoda, e mi dispiacerebbe perdere l'uso di uno strumento Windows cosi importante, è vero un file risolverebbe facilmente il mio problema ma vorrei evitare.
aaa
31/01/15 23:14
darioza
Non penso di poterti aiutare perchè non penso si possa fare, come fai a fare quello che vuoi senza i giusti privilegi?
quindi o si usa un utente con i giusti permessi, o li si ottengono (guardati la classe principalpermission se può esserti utile)
Altrimenti rimane l'alternativa file e l'alternativa environment, ma personalmente non andrei a immischiarmi nella seconda alternativa.
aaa