---
title: "Hur hanterar ni UAC Virtualization?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/183402-hur-hanterar-ni-uac-virtualization"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Pedda"
published: "2010-05-04T15:22:14.000Z"
updated: "2010-05-21T08:40:21.000Z"
replies: 3
views: 863
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/183402-hur-hanterar-ni-uac-virtualization"
---

# Hur hanterar ni UAC Virtualization?

## #1 — Pedda, 2010-05-04T15:22Z

När ni programmerar en desktop app, hur sköter ni filhanteringen för att det ska fungera så bra som möjligt med UAC Virtualization i Vista/Windows 7?

Tänker främst på när ni skriver till registret eller till disk.

Permalänk: https://www.webforum.nu/p/183402

## #2 — Pedda, 2010-05-20T21:27Z

Hmm, vad är detta?
Är jag ensam om att programmera desktop applikationer här, eller struntar ni bara i UAC?

Permalänk: https://www.webforum.nu/p/2235276

## #3 — Compusa, 2010-05-21T05:25Z

Nejdå, inte helt ensam och att strunta i UAC är inte hållbart :)

**Registret**
För mitt program har jag en registernyckel under Local_Machine och en  under Current_User. Brukar låta mitt installationsprogram skapa upp dessa. 

```
HKLM\Software\MittProgram (generella inställningar)
HKCU\Software\MittProgram (användarspecifika inställningar)

Eller...

HKLM\Software\Foretagsnamn\MittProgram (generella inställningar)
HKCU\Software\Foretagsnamn\MittProgram (användarspecifika inställningar)
```

Installationsprogrammet kör med adminisrationsrättigheter:
Local_Machine: skriva och läsa
Current_User. skriva läsa

Mitt program kräver inte att man kör med administratörsrättigheter så därför gäller:
Local_Machine: läsa
Current_User. skriva läsa

Så du bör du aldrig låta ditt program skriva i Local_Machine-delen av registret.

**Filsystemet**
När det gäller att skriva till disk så bör du undvika att skriva till systemmappar. Användarspecifik data skriver jag till %AppData% (C:\\Users\\\<username\>\\AppData) och gemensamdata till %ProgramData% (C:\\ProgramData).

Med .NET är det enkelt att komma åt rätt sökväg oavsett Windows-version med hjälp av 'Environment.SpecialFolder'. För att nå sökvägarna för lokala och gemensamma data kan du alltså skriva enligt följande:

```
string path1 = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string path2 = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);

// För roaming
string path3 = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData
```

Mer info [här](http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx). Innehåller en del nyttig information om sökvägarna!

Permalänk: https://www.webforum.nu/p/2235282

## #4 — Pedda, 2010-05-21T08:40Z

Låter som vi tänker likadant.
Tänkte om det fanns några andra rekommenderade sätt att hantera UAC på, men då är det bara att köra på som jag gjort fram tills nu.

Permalänk: https://www.webforum.nu/p/2235285

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/183402-hur-hanterar-ni-uac-virtualization
