Respond needs javascript to run. To find out more click here
uac » Serdar Demir
RSS
 

Posts Tagged ‘uac’

C# manifest dosyası ile UAC’ yi atlatmak

26 Mar

C# manifest dosyası ile UAC’ yi atlatmak

Uac user account control (kullanıcı denetimi teknolojisi) Windows vista ile gelen güvenlik özelliklerinden biridir. Sistemdeki özel yetki gerektiren dosyalar üzerinde işlem yapmak istediğinizde sizin onayınızı alması olayıdır. Buna örnek olarak cmd den diskpart yazdığımızda bu işlem için bizim onayımızı ister. Uac yi Kullanici hesap ayarları denetiminden manuel olarak kapatabilir ve değiştirebilirsiniz.


C# ile yaptığımız programlarda bazen UAC ye takılabiliriz özellikle klasör oluşturma veya regedit işlemlerinde örneğin regeditte local_machine den bir klasör silme işlemini aşağıdaki gibi direk çalıştırdığınızda güvenlik hatası verecektir.

Registry.LocalMachine.CreateSubKey(“SOFTWARE”).CreateSubKey(“Microsoft”).CreateSubKey(“Cryptography”).DeleteSubKey(“RNG”);

Yaptığımız programların UAC ye takılmaması için manifest dosyasını kullanırız. Manifest dosyası “once click ” ayarlarını gerçekleştirdiğimiz dosyamızdır. Projemize manifest dosyasını eklemek için solution explorer dan properties seçip “Security” sekmesinden once clik kısmını enabled yapıyoruz bunu yaptığımız anda bizim için manifest dosyanısı oluşturuyor fakat burda dikkat etmemiz gereken oluşturduktan sonra tekrar disabled hale getirmemiz gerekiyor.

Solution dan manifest dosyanızı açıyoruz dosyamız xml formatında. Manifest doayamızın içeriği aşağıdaki gibidir şimdi bölümler halinde inceleyelim.

trustInfo: Elementi projemizin güvenlik ayarlarını yapmamızı sağlar.

<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=” requireAdministrator ” uiAccess=”false” />

</requestedPrivileges>

<applicationRequestMinimum>

<defaultAssemblyRequest permissionSetReference=”Custom” />

<PermissionSet version=”1″ Unrestricted=”true” ID=”Custom” SameSite=”site” />

</applicationRequestMinimum>

</security>

</trustInfo>

Yukarıda gördüğümüz manifest dosyasındaki asInvoker Uygulama en düşük yetki seviyesinde çalıştır anlamına gelir. highestAvailable kullanıcıdan yüksek yetki ile çalışır ve bizden yetki ister. requireAdministrator Uygulamamız admin yetkisiyle çalışır. Biz işte burda default olarak gelen asinvoker kısmını  requireAdministrator olarak değiştireceğiz böylece projemiz UAC ye takılmadan işlemlerini gerçekleştirebilecek.

entryPoint: Click once olayı(publish, update ..) gerçekleştiği anda istemcide çalışacak olan program.

<entryPoint>

<commandLine file=”Notepad.exe” parameters=”run” />

</entryPoint>

 
1 Comment

Posted in C#, Makaleler