Domanda

Abbiamo appena scoperto che il codice che chiama le esigenze di funzionalità SetDateTime Win32 per l'esecuzione in modalità elevata in Windows 7, cioè anche dopo essersi loggato come amministratore, si deve ancora scegliere di eseguire il codice Imposta data come amministratore per la chiamata per modificare la data.

C'è qualcosa che posso fare in codice per chiamare sempre questa funzione con i privilegi elevati?

È stato utile?

Soluzione

Questo semplicemente non come funziona la sicurezza è. Cambiare l'orologio è un molto funzionamento intrusivo, ha un gran numero di effetti collaterali. Non v'è alcun meccanismo in Windows o qualsiasi altro sistema operativo per quella materia, in cui si potrebbe iniziare un processo con privilegi limitati e poi basta arbitrariamente bypass queste limitazioni e improvvisamente ottenere i diritti di amministratore. Non ci sarebbe alcun punto di sorta per i programmi in esecuzione con privilegi limitati, se fosse possibile.

Se si vuole fare qualcosa di simile, allora si dovrà eseguire il programma con diritti elevati. Su Vista e Win7 che richiede l'esecuzione come un servizio o un'operazione pianificata. Che richiedono un amministratore per avere installato. UAC fornisce un modo diritti di amministratore di guadagno per i programmi regolari, è necessario includere un manifesto nel vostro programma in modo che l'utente viene informato circa la vostra elevazione di privilegi. Google 'requireAdministrator', prendere il primo colpo.

Altri suggerimenti

È possibile utilizzare la chiamata API ShellExecute per lanciare un eseguibile con privilegi elevati.

Tuttavia, se UAC (User Access Control) è abilitato sulla macchina, l'utente sarà ancora ottenere il prompt UAC richiesto per le autorizzazioni per l'esecuzione elevati.

Quindi non credo che si può evitare la richiesta per il permesso di elevazione, ma almeno l'utente non deve eseguire manualmente il programma come un amministratore.

Per favore fatemi sapere se avete bisogno di aiuto su come lanciare un eseguibile come un amministratore.

Come altri hanno detto, è necessario generare un nuovo processo per ottenere autorizzazioni elevate, che si tradurrà in una finestra di UAC.

Se questo è qualcosa che è necessario per l'esecuzione automatica si potrebbe provare in esecuzione come servizio. Ciò darà contesto elevata è necessario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top