Archívum

Archive for the ‘UAC’ Category

Windows 7 – Legyen az alkalmazásunk UAC Ready

2010. május 7. péntek Hozzászólás

A Start Solution innen tölthető le.

A User Account Control,  az az újdonság, ami a Vista megjelenésével került a köztudatba. Sokan nem szeretik, sokan kikapcsolják, de el kell ismerni, ez egy hasznos újítás, és a Windows 7 esetében már sokkal okosabb is, mint eddig volt. Nem kérdezget annyit és felhasználó barátiabb is. Az UAC feladata, hogy a felhasználót megvédje a saját illetve a környezet butaságaitól. Olykor elég agresszív módon védi a felhasználót, de tudni kell, hogy a Windows felhasználók közel 80-90% rendszergazdai módban használja a számítógépét. Így teljes hozzáférése van a rendszer felett, tehát a felhasználó mindent megtehet a rendszerén, így az alkalmazások is ugyan azzal a jogosultságokkal rendelkeznek (nagy többségük) mint a felhasználó. Tehát az alkalmazásoknak is korlátlan hatalmuk van ilyenkor a rendszer felet, így ha rosszindulatú program akkor törölhet, pusztíthat szaporodhat stb. De az UAC-al egyfajta virtuális homokozóban játszik a felhasználó. Rendszergazdaként viselkedik ugyan, de ahhoz, hogy például a C meghajtón vagy a registryben, valamit kontárkodjon meg kell erősíteni, hogy valóban ő az és valóban ő akarja azt a műveletet elvégezni. Ez az, ami olykor idegesítő lehet, de bizony-bizony a laikus felhasználó számára hasznos lehet ez a védvonal.  A fejlesztőknek meg immár külön gondoskodni kell arról, hogy az UAC véletlenül se állítsa le az alkalmazást hozzáférés megtagadva hibával.

Például az alkalmazásunk, ami a C meghajtóra írna és nincs elindítva rendszergazdaként súlyos kivételeket dobhat, amit ha nem kezelünk le, akkor el is szállhat. De mi definiálhatjuk az alkalmazás számára, hogy márpedig ő csak adminisztrátor módban futhat, így elkerülve az esetleges problémákat. Ebben az esetben az alkalmazás indulásakor az UAC felugrik és könyörtelenül kérdezi a felhasználót, hogy biztos, hogy el akarja-e indítani. Ilyenkor nem kell a jobb egérgomb Run as Administrator -os kattintgatás, hanem rögtön úgy is akar indulni az alkalmazás. De nézzük meg, hogy mely lépéseket kell elkövetnünk ahhoz, hogy UAC Ready legyen az alkalmazás.

1.      A Solution Explorerben válasszuk ki és nyissuk meg az app.manifest állományt

2.      Ekkor az alábbi XML fog minket fogadni.

Látható, hogy az előzőekben hozzáadott dependency element is része a manifest fájlnak, de azt most hagyjuk figyelmen kívül, és koncentráljunk a trustInfo elementre.

<?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"/>
 <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>
  <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" uiAccess="false" />
         <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
  
      <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
            If you want to utilize File and Registry Virtualization for backward
            compatibility then delete the requestedExecutionLevel node.
        –>
        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>

</asmv1:assembly>

1.     A requestedExecutionLevel elment level tulajdonságát kell állítanunk ahhoz, hogy célunkat elérjük. De figyeljük meg, hogy a kikommentezett részben a level tulajdonság lehetséges értékei találhatók.

·         asInvoker: A program pontosan olyan jogosultságokkal fog futni, mint az őt meghívó, elindító program, folyamat

·         requireAdministrator: Csak rendszergazdaként fut és rendszergazdai jogokért kér megerősítést.

·         highestAvailable: A program az elérhető, lehető legmagasabb felhasználói jogosultságért kér megerősítést.

2.      Alapértelmezés szerint asInvoker beállítást használja. Ezt írjuk át a requireAdministrator –ra.

3.      Innentől kezdve, amikor indítanánk az alkalmazást akkor az UAC ablak automatikusan fel fog jönni. (Ne a Visual Studiobol indítsuk az alkalmazást, hogy kipróbáljuk)

Kategóriák:.NET, UAC, Windows7