Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

Visual Studio 2008 e i manifesti per Windows Vista

Visual Studio 2008, oltre ad essere progettato per lavorare con Windows Vista, consente di creare applicazioni per le quali sia possibile specificare il livello di privilegi richiesti nell'ambito dell'UAC di Vista, mediante un apposito file di manifesto.

Ogni qual volta si crea un'applicazione Windows (Windows Forms, Windows Presentation Foundation e Console) Visual Studio 2008 genera un file chiamato App.manifest, che è possibile modificare aprendo la finestra My Project di Visual Basic 2008, facendo clic sulla scheda Application, quindi clic sul pulsante View UAC Settings. Non ho trovato analogo pulsante in Visual C#, mentre, per questo linguaggio, il file di manifesto l'ho trovato impostando la visualizzazione di tutti i file, sfogliando la cartella Bin. C'è un file con estensione .vschost.exe.manifest che contiene il manifesto. Mi sembra strano sia così macchinosa la cosa in C#, cercherò di documentarmi meglio.

In ogni caso, almeno in Visual Basic, il file App.manifest viene aperto nell'editor XML incorporato in Visual Studio (anche nelle edizioni Express). Facendo delle prove, ho notato che il file è identico in tutti i tipi di applicazione sopra specificato e quello che segue è il suo codice XML:

<?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">
        <!-- UAC Manifest Options
            If you want to change the Windows User Account Control level replace the 
            requestedExecutionLevel node with one of the following.

        <requestedExecutionLevel  level="asInvoker" />
        <requestedExecutionLevel  level="requireAdministrator" />
        <requestedExecutionLevel  level="highestAvailable" />

            If you want to utilize File and Registry Virtualization for backward 
            compatibility then delete the requestedExecutionLevel node.
        -->
        <requestedExecutionLevel level="asInvoker" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</asmv1:assembly>
La parte di primario interesse è rappresentata dal nodo Security, al cui interno risiede l'elemento requestedPrivileges. 
Fortunatamente, i commenti inseriti all'interno del file ci sono di grande aiuto. Si tratta, infatti, di impostare l'attributo Level dell'elemento 
requestedExecutionLevel utilizzando uno dei valori suggeriti nei commenti, che riporto di seguito con la relativa spiegazione:

Valore attributo Level

Significato
asInvoker Utilizza il livello di privilegi per utenti standard
requireAdministrator Richiede che l'utente che esegue l'applicazione sia del gruppo Amministratori
highestAvailable Richiede il più alto livello di privilegi possibile per l'utente corrente.

Come potete notare, l'IDE specifica automaticamente il livello di privilegi per utenti standard (asInvoker), che è la scelta forse più opportuna, a meno che l'applicazione non debba fare ricorso a particolari risorse di sistema.

Durante la generazione dell'assembly, il manifesto viene incorporato e consente una migliore interazione col nuovo sistema operativo di Microsoft.

Alessandro

Print | posted on martedì 13 novembre 2007 14:36 | Filed Under [ .NET Framework Visual Studio 2008 Windows 7 ]

Powered by:
Powered By Subtext Powered By ASP.NET