none
Permessi di accesso RRS feed

  • Domanda

  • Sono passato da poco a .net framework 4.0, convertendo un programma sviluppato in 2.0 ho incontrato il seguente errore: "autorizzazioni insufficienti per impostare l'ora del sistema" alla riga: TimeOfDay = strNuovoOrario.
    Mi sono guardato un pò in giro sulla guida è ho importato :
    Imports System
    Imports System.Threading
    Imports System.Security
    Imports System.Security.Policy
    Imports System.Security.Permissions
    ma senza risultato.
    Sapete fornirmi qualche esempio più valido di quelli della guida perchè non riesco ad andare avanti, grazie a tutti. Sergio
    sabato 31 luglio 2010 20:22

Risposte

Tutte le risposte

  • Ciao,

    puoi postare il codice che utilizzi per ulteriori indagini?.

    Ciao.

    sabato 31 luglio 2010 22:46
  • dragonflash wrote:

    Sono passato da poco a .net framework 4.0, convertendo un programma sviluppato in 2.0 ho incontrato il seguente errore: "autorizzazioni insufficienti per impostare l'ora del sistema" alla riga: TimeOfDay = strNuovoOrario. Mi sono guardato un pò in giro sulla guida è ho importato : Imports System Imports System.Threading Imports System.Security
    Imports System.Security.Policy
    Imports System.Security.Permissions
    ma senza risultato.
    Sapete fornirmi qualche esempio più valido di quelli della guida perchè non riesco ad andare avanti, grazie a tutti. Sergio

    Sei totalmente fuori strada:
    1. imports è una faccenda che riguarda i namespace e ti evita solo di ripetere il nome completo di namespace in quel sorgente
    2. system.security policy e perimissions riguardano la CAS e non ha niente a che fare con la security di windows
    3. se non hai i privilegi di amministratore non c'è modo di cambiare l'ora del pc
    4. un processo in windows non può mai cambiare il proprio token, per cui se è stato lanciato come utente non avrà mai i privilegi di amministratore

    A questo punto se usi Vista/Win7 e vuoi cambiare l'ora puoi usare uno dei due sistemi:
    - lanciare un nuovo processo che cambi l'ora
    - usare il com elevation moniker per elevare un oggetto com che cambi l'ora (il che richiede familiarità con la programmazione com

    Che vuoi fare?


    Raffaele Rialdi  http://www.iamraf.net
    Weblog: http://blogs.ugidotnet.org/raffaele
    Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
    UGIdotNET - http://www.ugidotnet.org/


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele
    sabato 31 luglio 2010 23:15
  • Ciao,

    per fare cio' che intendi o utilizzi elevation moniker come detto e suggerito nel post precedente,

    diversamente, dovrai lanciare il processo come amministratore e non come utente, nel caso di winvista/seven,

    il che non e il massimo a mio parere.

    Ciao.

    sabato 31 luglio 2010 23:30
  • Grazie per le risposte , solo ora mi sono connesso,credo che la strada più percorribile sia quella di lanciare il programma come amministratore. Però essendo un programma distribuito, i requisiti di amministratore lo dovrebbe impostare da default, in maniera che l'utente non si accorga di niente e sia trasparente. Scusate se ho detto qualche corbelleria, ma è una cosa fattibile, esiste una classe per impostare i requisiti di amministratore al programma ?

     

    domenica 1 agosto 2010 19:47
  • Ciao,

    io personalmente non darei direttamente i diritti di amministratore facendo cosi in modo da creare o modificare

    cose qua e la per il sistema operativo.

    Comunque se vuoi impostare tale cosa ci mancherebbe, ho qui una discussione che potrebbe fare a caso tuo

    http://social.microsoft.com/Forums/it-IT/visualbasicit/thread/6584bffd-63b8-44a0-9a11-21e67a4b949f

    Ciao.

    • Contrassegnato come risposta dragonflash domenica 1 agosto 2010 20:13
    domenica 1 agosto 2010 19:53
  • Grazie , quel post mi è stato molto utile, non lo conoscevo, me lo sono stampato tutto , e me lo studio con calma
    • Contrassegnato come risposta dragonflash domenica 1 agosto 2010 20:13
    • Contrassegno come risposta annullato dragonflash domenica 1 agosto 2010 20:14
    domenica 1 agosto 2010 20:13
  • dragonflash wrote:

    Grazie per le risposte , solo ora mi sono connesso,credo che la strada più percorribile sia quella di lanciare il programma come amministratore. Però essendo un programma distribuito, i requisiti di amministratore lo dovrebbe impostare da default, in maniera che l'utente non si accorga di niente e sia trasparente. Scusate se ho detto qualche corbelleria, ma è una cosa fattibile, esiste una classe per impostare i requisiti di amministratore al programma ?

     

    Le applicazioni che partono come amministratore (tramite manifest o altro sistema) non sono certificabili. A te magari non interessa, ma sappi che è una violazione delle best practice.
    La procedura corretta è di elevare solo l'operazione che richiede i privilegi amministrativi usando com moniker o il lancio di un altro processo.


    Raffaele Rialdi  http://www.iamraf.net
    Weblog: http://blogs.ugidotnet.org/raffaele
    Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
    UGIdotNET - http://www.ugidotnet.org/


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele
    domenica 1 agosto 2010 21:20
  • Ciao,

    grazie Raffaele per il tuo post , questa e un'aspetto molto importante.

    A me personalmente non e mai piacuito lasciare partire qualunque applicativo con diritti di amministratore,

    ho sempre ingorato questa cosa lasciando tutto standard.

    A proposito del tuo post , grazie mille perche' devo essere sincero e onesto non ero affatto a conoscenza di cio'

    che hai scritto con l'ultimo post, ora all'OP non interessava come tu dici, ma questa e una cosa molto importante

    per tutti gli utenti del forum(sottoscritto compreso).

    Ciao e grazie ancora.

    domenica 1 agosto 2010 21:27
  • Grazie per le risposte , solo ora mi sono connesso,credo che la strada più percorribile sia quella di lanciare il programma come amministratore. Però essendo un programma distribuito, i requisiti di amministratore lo dovrebbe impostare da default, in maniera che l'utente non si accorga di niente e sia trasparente. Scusate se ho detto qualche corbelleria, ma è una cosa fattibile, esiste una classe per impostare i requisiti di amministratore al programma ?

     

    Per impostare i privilegi d'amministratore basta:

    1- andare nelle impostazioni di progetto del progetto;

    2- applicazioni\Visualizza impostazioni di controllo dell'account utente

    3- si vedrà ciò:

     

    <?xml version="1.0" encoding="utf-8"?>

    <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

      <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>

      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">

        <security>

          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">

            <!-- Opzioni manifesto Controllo account utente

                Se si desidera modificare il livello di Controllo account utente di Windows, sostituire il 

                nodo requestedExecutionLevel con uno dei seguenti.

     

            <requestedExecutionLevel  level="asInvoker" uiAccess="false" />

            <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

            <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

     

                Se si desidera utilizzare Virtualizzazione file system e registro di sistema per la 

                compatibilità con le versioni precedenti, eliminare il nodo requestedExecutionLevel.

            -->

            <requestedExecutionLevel level="asInvoker" uiAccess="false" />

          </requestedPrivileges>

        </security>

      </trustInfo>

    </asmv1:assembly>

    basta sostituire la riga

     <requestedExecutionLevel level="asInvoker" uiAccess="false" />

    con una delle seguenti impostazioni:

     

    <requestedExecutionLevel  level="asInvoker" uiAccess="false" /> 'Accesso limitato

            <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" /> 'Accesso amministratore

            <requestedExecutionLevel  level="highestAvailable" uiAccess="false" /> 'non saprei ma credo che sia un accesso superiore a quello d'amministratore.

     

     


    Giammi
    domenica 5 settembre 2010 13:43