Merkezefendi / Denizli +90 (555) 193 21 93 info@codefaults.com

C# ile Projeyi Yönetici Olarak Çalıştırma

Blog Yazısı
C# ile Projeyi Yönetici Olarak Çalıştırma
C#

C# ile Projeyi Yönetici Olarak Çalıştırma

Administrator 01.01.2020 922 görüntülenme

C# ile Projeyi Yönetici Olarak Çalıştırma

C# ile geliştirdiğiniz bazı uygulamalarda Windows kayıt defterine (Registry) erişmek, sistem ayarlarını değiştirmek, servis işlemleri gerçekleştirmek, CMD veya PowerShell komutları çalıştırmak ya da sistem üzerinde yönetici yetkisi gerektiren işlemler yapmak gerekebilir.

Bu tür işlemlerde uygulama standart kullanıcı yetkileriyle çalıştırıldığında erişim reddedildi, yetki yetersiz veya benzeri hatalarla karşılaşılabilir.

Kullanıcıdan her seferinde uygulamaya sağ tıklayıp “Yönetici olarak çalıştır” seçeneğini kullanmasını istemek yerine, uygulamanın Windows tarafından başlatılırken yönetici yetkisi talep etmesini sağlayabiliriz.

Bunun için C# projelerinde Application Manifest File kullanabiliriz.

Application Manifest File Nedir?

Application Manifest File, Windows uygulamasının çalışma şekliyle ilgili çeşitli bilgilerin tanımlanabildiği XML tabanlı bir dosyadır.

Bu dosya üzerinden uygulamanın Windows tarafından hangi yetki seviyesinde çalıştırılmasının istendiği belirtilebilir.

Yönetici yetkisi gerektiren uygulamalarda kullanacağımız temel ayar ise:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

satırıdır.

Bu ayar sayesinde uygulama başlatıldığında Windows, uygulamanın yönetici yetkisiyle çalıştırılmasını ister.

Application Manifest File Ekleme

Öncelikle Visual Studio'da yönetici olarak çalıştırmak istediğimiz C# projesini açıyoruz.

Ardından Solution Explorer üzerinden projemize sağ tıklıyoruz.

Menüden:

Add → New Item

seçeneğini seçiyoruz.

Açılan pencerede Application Manifest File seçeneğini buluyoruz.

Dosyayı projemize ekliyoruz.

Visual Studio, manifest dosyasını oluşturduktan sonra içerisinde uygulamanın çalışma yetkilerini belirleyen XML yapılandırmasını görebilirsiniz.

requestedExecutionLevel Ayarını Değiştirme

Manifest dosyası içerisinde aşağıdaki satırı buluyoruz:

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

Buradaki asInvoker değeri, uygulamanın mevcut kullanıcı yetkileriyle çalıştırılmasını ifade eder.

Yani kullanıcı uygulamayı standart kullanıcı olarak çalıştırıyorsa uygulama da standart kullanıcı yetkileriyle çalışır.

Yönetici yetkisi talep etmek için bu satırı aşağıdaki şekilde değiştiriyoruz:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

Sonuç olarak ilgili bölüm şu şekilde olacaktır:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

requireAdministrator Ne İşe Yarar?

Buradaki:

requireAdministrator

ifadesi, uygulamanın çalışabilmesi için Windows'tan yönetici yetkisi talep edilmesini sağlar.

Uygulama başlatıldığında Windows, kullanıcı hesabının yetkilerine ve UAC yapılandırmasına bağlı olarak Kullanıcı Hesabı Denetimi (UAC) ekranını gösterebilir.

Kullanıcı gerekli onayı verdiğinde uygulama yönetici yetkileriyle çalışır.

Bu sayede kullanıcı her seferinde uygulama dosyasına sağ tıklayıp “Yönetici olarak çalıştır” seçeneğini manuel olarak seçmek zorunda kalmaz.

Uygulama İçerisinde Yönetici Yetkisi Gerektiren İşlemler

Bu yöntem özellikle aşağıdaki işlemleri gerçekleştiren uygulamalarda kullanılabilir:

  • Windows Registry işlemleri
  • Sistem dosyaları üzerinde işlem yapma
  • Windows servislerini yönetme
  • Firewall kurallarını değiştirme
  • Sistem ayarlarını değiştirme
  • CMD veya PowerShell üzerinden yönetici yetkisi gerektiren komutlar çalıştırma
  • Ağ yapılandırmasıyla ilgili bazı işlemler
  • Program kurulumu ve güncelleme işlemleri
  • Sistem seviyesinde çalışan yardımcı araçlar

Örneğin uygulamanız Windows Firewall üzerinde kural eklemek için yönetici yetkisine ihtiyaç duyuyorsa manifest dosyasında requireAdministrator kullanılması gerekebilir.

Uygulamanın Çalışma Mantığı

Normal durumda uygulamanız:

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

şeklindeyse mevcut kullanıcı yetkileriyle çalışır.

Yönetici yetkisi istediğinizde ise:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

kullanılır.

Temel olarak çalışma mantığı şu şekildedir:

Uygulama başlatılır        ↓ Manifest dosyası kontrol edilir        ↓ requireAdministrator        ↓ Windows yönetici yetkisi talep eder        ↓ UAC onayı        ↓ Uygulama yönetici yetkileriyle çalışır

Dikkat Edilmesi Gerekenler

requireAdministrator kullanıldığında uygulamanız her zaman yönetici yetkisiyle çalışır.

Bu nedenle uygulamanızın gerçekten yönetici yetkisine ihtiyacı olup olmadığını değerlendirmek önemlidir.

Gereksiz yere yönetici yetkisi istemek güvenlik açısından önerilen bir yaklaşım değildir.

Eğer uygulamanın yalnızca belirli bir işlemi yönetici yetkisiyle gerçekleştirmesi gerekiyorsa, tüm uygulamayı yönetici olarak çalıştırmak yerine yalnızca ihtiyaç duyulan işlemi ayrı bir yönetici yetkili işlem olarak tasarlamak daha güvenli bir yaklaşım olabilir.

Ayrıca requireAdministrator kullanılması, UAC'nin tamamen devre dışı bırakıldığı anlamına gelmez. Windows'un güvenlik politikalarına göre kullanıcıdan yetki onayı istenebilir.

Sonuç

C# ile geliştirdiğiniz uygulamanızın Windows üzerinde yönetici yetkileriyle otomatik olarak başlatılmasını istiyorsanız Application Manifest File kullanabilirsiniz.

Manifest dosyasındaki:

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

satırını:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

şeklinde değiştirmeniz yeterlidir.

Bu ayardan sonra uygulamanız başlatılırken Windows tarafından yönetici yetkisi talep edilir ve kullanıcı her seferinde “Yönetici olarak çalıştır” seçeneğini manuel olarak kullanmak zorunda kalmaz.

Özellikle Registry, Windows servisleri, Firewall, sistem ayarları ve yönetici yetkisi gerektiren diğer işlemleri gerçekleştiren masaüstü uygulamalarında bu yöntem oldukça kullanışlıdır.

Yorumlar (0)

Bu yazıya henüz yorum yapılmamış.

Yorum Yap

Blog Bilgileri

Kategori
C#
Yayın Tarihi
01.01.2020
Görüntülenme
922

Etiketler

C# .NET ASP.NET MVC SQL LINQ Yazılım Masaüstü Uygulaması Web Uygulaması Otomasyon Özel Yazılım Kurumsal Yazılım Veritabanı Yönetim Sistemi Personel Takip PDKS ZKTeco Sıramatik Plazma Bilgilendirme Klinik Yönetimi Laboratuvar Takip Teknik Servis Muhasebe Finans Hızlı Satış Stok Yönetimi Randevu Yönetimi Yedekleme Backup FTP Veri Güvenliği Raporlama Entegrasyon Sistem Yönetimi

©2010 - 2026 Codefaults Tüm Hakları Saklıdır.