webForumDet fria alternativet

Hur hanterar ni UAC Virtualization?

3 svar · 856 visningar · startad av Pedda

PeddaMedlem sedan juni 20006 032 inlägg
#1

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.

PeddaMedlem sedan juni 20006 032 inlägg
#2

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

CompusaMedlem sedan jan. 20023 327 inlägg
#3

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. Innehåller en del nyttig information om sökvägarna!

PeddaMedlem sedan juni 20006 032 inlägg
#4

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.

124 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)