-
20-12-2009, 14:27 #1Approved 9liver
- Registered
- 17/01/05
- Location
- Dilbeek
- Posts
- 1,954
- iTrader
- 48 (93%)
- Mentioned
- 2 Post(s)
[C#] System.Security.Permissions.RegistryPermission
Hey,
Momenteel schrijf ik een kleine applicatie voor een TCPIP probleempje op te lossen om te switchen tussen DHCP aan of uit. Hiervoor wil ik graag een registry entry aanpassen, maar ben sinds kort overgeschakeld van winXP naar win7 en zit met een klein probleempje omtrent de UAC.
Ik heb even een klein testje gemaakt om mijn probleem uit te leggen:
So far so good, normaalgezien zou hij - als ik msdn goed begrijp - een UAC popupje moeten weergeven waar ik zeg dat ik deze rechten wil toewijzen aan mijn toepassing.Code:try { RegistryPermission regPermission = new RegistryPermission(RegistryPermissionAccess.Write, "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\services\\{9D99B3F0-5CB1-4831-8FFE-849261B1513F}\\Parameters\\Tcpip"); regPermission.Demand(); } catch (Exception exc) { Console.WriteLine("Unable to ask permission"); } RegistryKey regIp = Registry.LocalMachine; try { regIp.OpenSubKey(@".SYSTEM\CurrentControlSet\services\{9D99B3F0-5CB1-4831-8FFE-849261B1513F}\Parameters\Tcpip", true); regIp.SetValue("EnableDHCP", 1); } catch (Exception exc) { Console.WriteLine(exc); } finally { regIp.Close(); } } }
Nu is dat net het probleem, de UAC popup krijg ik jammer genoeg niet. Iemand enige informatie hierover? -ja, ik heb gegoogled-no votes
-
-
20-12-2009, 22:30 #2Member
- Registered
- 03/04/08
- Posts
- 20
- iTrader
- 0
- Mentioned
- 0 Post(s)
Ik neem aan dat je UAC daadwerkelijk aanstaat. Heb je al geprobeerd je applicatie te builden, en appart te openen?
Bij't debuggen in Visual Studio wordt de app onder vshost.exe geopend, en't kan best gebeuren dat die van de UAC niets te horen krijgt.no votes
-
21-12-2009, 01:37 #3Approved 9liver
- Registered
- 17/01/05
- Location
- Dilbeek
- Posts
- 1,954
- iTrader
- 48 (93%)
- Mentioned
- 2 Post(s)
Reeds geprobeerd indeed om de gecompileerde exe te runnen als administrator, maar zonder enig resultaat. Ook zonder de try catches om even te proberen geen resultaat, ik vind het maar raar.

Anyway, de applicatie runnen als administrator door rechtermuisknop > run as te doen zie ik minder zitten, aangezien ik er een kleine trayapp wil van maken. Het zou dus handig zijn moest het werken met de UAC popup.
Bedankt voor de hulp iig
no votes
-
22-12-2009, 22:01 #4Member
- Registered
- 08/11/03
- Location
- Antwerpen
- Posts
- 1,726
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 2/2
Zou me sterk lijken dat je een UAC pop up zou kunnen tonen met code access security.
Die Demand dat je doet, gaat na of de huidge context waarin je applicatie draait toegang heeft tot bepaalde dingen (in die geval de registry). Als die demand faalt, wordt er een SecurityException getrowt (dewelke jij catcht, slecht idee), door die SecurityException kan de gebruiker van de applicatie zien over welke rechten niet beschikt.
Er zijn eigelijk weinig applicaties die gebruik maken van CAS. Enkel in de code van het .NET framework komt het wel wat voor.
De code uit je voorbeeld lijkt me ook nogal raar gestructureerd. Je catcht daar een exception als de gebruiker geen RegistryPermission heeft, maar je gaat nog steeds wel de Registry openen, wat altijd een fout gaat geven (die je dan weer wel opvangt).no votes
-
23-12-2009, 10:17 #5Approved 9liver
- Registered
- 17/01/05
- Location
- Dilbeek
- Posts
- 1,954
- iTrader
- 48 (93%)
- Mentioned
- 2 Post(s)
Ik weet dat het weinig gestructureerde code is hierboven, had wat zitten prutsen om wat uit te testen omtrent de UAC, die try-catches staan inderdaad helemaal niet op punt.
Welke manier kan ik dan gebruiken om mezelf die rechten toe te wijzen, hoeft desnoods niet met die UAC popup te zijn.
Kan eventueel gewoon op die regkey full access rights toewijzen, maar om dit op elke pc te doen waar ik mijn app wil op draaien, zou het imo wat omslachtig zijn.
Aan hand van impersonation soms? Gisteren eens bekeken maar niet veel tijd gehad, waardoor ik dit niet uitvoerig heb kunnen testen.
Bedankt voor de informatie alvast!no votes
