1. #1
    Slynx's Avatar
    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:

    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();
                }
            }
        }
    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.

    Nu is dat net het probleem, de UAC popup krijg ik jammer genoeg niet. Iemand enige informatie hierover? -ja, ik heb gegoogled-
    no votes  

  2. #2

    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  

  3. #3
    Slynx's Avatar
    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  

  4. #4

    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  

  5. #5
    Slynx's Avatar
    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  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in