I Still Know Kung Fu
Seçkin Üye
İ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 ;
C# ile Windows App bir proje açtığınızı varsayıyorum

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 ;
bunları yazdıktan sonra şu kodları globale yazmamız gerekiyor (elle yazmayı tavsiye ederim, öğrenim açısından)
(Kendinize göre editleyebilirsiniz ("runas" kısmı hariç))
Ardından tekrar globale ;
Kodunu ekliyoruz.
İşlem tamamdır, son olarak "InitializeComponent();" komutunun hemen altına
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 ;
Örnek program ;
VT ;
Hepinize iyi akşamlar...
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.
- 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.

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: