açık cevap C# projesi için bir bildirim dosyası eklemek ve aşağıdaki satırı eklemektir:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Ama oldukça alışılmışın dışında bir yaklaşım da alınabilir. Kayıt defteri erişiminin yönetici ayrıcalıklarını gerektirdiğini biliyoruz. Bir programı yönetici olarak çalıştırın yoksa Yani, bir kayıt defteri yazma erişimi içeren bir işlev varsa, işlev bir System.Security.SecurityException
atacağım. Programın başında bu işlevi çağırmanız gerektiği ima edilir. Bu istisna atılırsa, programı yönetici olarak çalıştırması ve programı kapatması için kullanıcıyı bilgilendirebilirsiniz. İşte
public void enforceAdminPrivilegesWorkaround()
{
RegistryKey rk;
string registryPath = @"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\";
try
{
if(Environment.Is64BitOperatingSystem)
{
rk = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64);
}
else
{
rk = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32);
}
rk = rk.OpenSubKey(registryPath, true);
}
catch(System.Security.SecurityException ex)
{
MessageBox.Show("Please run as administrator");
System.Environment.Exit(1);
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
}
, hat
rk = rk.OpenSubKey(registryPath, true)
içinde
true
o kayıt defterine yazma erişimi ihtiyacı programı söyler. arasında
Olası yinelenen [Nasıl yönetici olarak çalıştırmak için .NET uygulamasını zorlamak için?] (http://stackoverflow.com/questions/2818179/how-to-force-my-net-application-to-run-as -yönetici) VS http://philippsen.wordpress.com/tag/requestedexecutionlevel-manifest/ – amens