C# Programı yönetici olarak çalıştırma (Örnek source)

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
I Still Know Kung Fu
Seçkin Üye
Katılım
30 Ağu 2018
Mesajlar
513
Çözümler
1
Tepki puanı
209
Ödüller
4
Yaş
24
7 HİZMET YILI
İyi akşamlar MH ailesi bugün sizlere C# ile kodladığınız bir programı ClickOnce ile bile nasıl UAC (yönetici modunda) çalıştırabileceğinizi anlatacağım ve konu sonuna örnek source ile birlikte kendi yaptığım programı koyacağım.
Properties kısmı ile ilgili olayı yaptığınızı varsayıyorum yapmadıysanız eğer ;
- Projeye sağ tıklayıp properties seçeneğine basın
- Security sekmesine gelin
- "Enable ClickOnce... adlı seçeneğe tik koyun
- Properties kısmının altında "app.manifest" xml dosyası gelecektir
- "<requestedExecutionLevel level="asInvoker" uiAccess="false" />" kısmını
- "<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />" ile değiştirin.
C# ile Windows App bir proje açtığınızı varsayıyorum

Adsız tasarım (1).png

Ardından desing kısmına çift tıklayarak kod kısmına geçelim (projeye çift tıklamanız yeterli)

Şimdi kullanacağımız kodlar için bir kaç kütüphane eklememiz lazım ;

C#:
using System.Diagnostics;
using System.Reflection;
using System.Security.Principal;
using System.Windows;

bunları yazdıktan sonra şu kodları globale yazmamız gerekiyor (elle yazmayı tavsiye ederim, öğrenim açısından)

C#:
private void Yoneticizni()
        {
            if (!Yoneticiznikontrol())
            {
                ProcessStartInfo program = new ProcessStartInfo();
                program.UseShellExecute = true;
                program.WorkingDirectory = Environment.CurrentDirectory;
                program.FileName = Assembly.GetEntryAssembly().CodeBase;

                program.Verb = "runas";
              
                try
                {
                    Process.Start(program);
                    Environment.Exit(0);

                  

                }
                catch (Exception)
                {
                    cevap=MessageBox.Show("Program yönetici izni olmadan düzgün çalışmayacaktır!\n yinede çalıştırmak istiyor musunuz ? ","YÖNETİCİ İZNİ",MessageBoxButtons.YesNo,MessageBoxIcon.Warning);
                    if (cevap==DialogResult.No)
                    {
                        Environment.Exit(0);
                    }
                    else
                    {
                      
                    }
                }
            }
        }

(Kendinize göre editleyebilirsiniz ("runas" kısmı hariç))

Ardından tekrar globale ;

C#:
DialogResult cevap;
        private bool Yoneticiznikontrol()
        {
            WindowsIdentity id = WindowsIdentity.GetCurrent();
            WindowsPrincipal principal = new WindowsPrincipal(id);

            return principal.IsInRole(WindowsBuiltInRole.Administrator);
        }

Kodunu ekliyoruz.

İşlem tamamdır, son olarak "InitializeComponent();" komutunun hemen altına

C#:
Yoneticizni();

Komutunu ekliyoruz.

İşlem tamamlandı programı "Start" ile çalıştıramazsanız direk exe' den deneyebilirsiniz. sorunsuz çalışacaktır.

Bütün her şey bittikten sonra ki source ;

C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.Reflection;
using System.Security.Principal;
using System.Windows;

using System.Windows.Input;


namespace WindowsFormsApp26
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Yoneticizni();
        }
      
        private void Yoneticizni()
        {
            if (!Yoneticiznikontrol())
            {
                ProcessStartInfo program = new ProcessStartInfo();
                program.UseShellExecute = true;
                program.WorkingDirectory = Environment.CurrentDirectory;
                program.FileName = Assembly.GetEntryAssembly().CodeBase;

                program.Verb = "runas";
              
                try
                {
                    Process.Start(program);
                    Environment.Exit(0);

                  

                }
                catch (Exception)
                {
                    cevap=MessageBox.Show("Program yönetici izni olmadan düzgün çalışmayacaktır!\n yinede çalıştırmak istiyor musunuz ? ","YÖNETİCİ İZNİ",MessageBoxButtons.YesNo,MessageBoxIcon.Warning);
                    if (cevap==DialogResult.No)
                    {
                        Environment.Exit(0);
                    }
                    else
                    {
                      
                    }
                }
            }
        }
        DialogResult cevap;
        private bool Yoneticiznikontrol()
        {
            WindowsIdentity id = WindowsIdentity.GetCurrent();
            WindowsPrincipal principal = new WindowsPrincipal(id);

            return principal.IsInRole(WindowsBuiltInRole.Administrator);
        }
        private void Form1_Load(object sender, EventArgs e)
        {
          
        }
    }
}

Örnek program ;
Bağlantıları görmek için lütfen Giriş Yap

VT ;
Bağlantıları görmek için lütfen Giriş Yap


Hepinize iyi akşamlar...
 
Son düzenleme:
ÖLÜM ÖLÜM DEDİĞİN NEDİR Kİ GÜLÜM
Efsane Üye
Katılım
26 Şub 2016
Mesajlar
11,174
Çözümler
139
Tepki puanı
3,968
Ödüller
19
Yaş
27
10 HİZMET YILI
Eline sağlık yararlı konu iyi iş çıkarmışsın kutlarım seni , başarıların devamını dilerim
 
Seçkin Üye
Katılım
6 Ocak 2017
Mesajlar
413
Çözümler
1
Tepki puanı
84
Ödüller
7
9 HİZMET YILI
manifest dosyasına
C#:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
kodunu ekledikten sonra zaten kullanıcı istesin istemesin yönetici izni olmadan çalışmaz program bu kadar kod zahmetine girmenin sebebi ne ?
 
Banlı Üye
Katılım
8 Tem 2019
Mesajlar
192
Tepki puanı
58
Yaş
28
6 HİZMET YILI
manifest dosyasına
C#:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
kodunu ekledikten sonra zaten kullanıcı istesin istemesin yönetici izni olmadan çalışmaz program bu kadar kod zahmetine girmenin sebebi ne ?
onu bende düşündüm hacı bizde adettendir çalışmıyorsa yönetici olarak çalıştırmak ne gerek var bu kadar koda
 
I Still Know Kung Fu
Seçkin Üye
Katılım
30 Ağu 2018
Mesajlar
513
Çözümler
1
Tepki puanı
209
Ödüller
4
Yaş
24
7 HİZMET YILI
manifest dosyasına
C#:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
kodunu ekledikten sonra zaten kullanıcı istesin istemesin yönetici izni olmadan çalışmaz program bu kadar kod zahmetine girmenin sebebi ne ?
Evet o şekilde de çalışır ancak ClickOnce desteklemez başta da belirttiğim gibi bu kodlar ClickOncede de çalışması içindir
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst