Câu trả lời hiển nhiên là thêm một file manifest cho dự án C# và thêm dòng sau:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Nhưng, một cách tiếp cận khá chính thống cũng có thể được thực hiện. Chúng tôi biết rằng quyền truy cập đăng ký yêu cầu đặc quyền của quản trị viên. Vì vậy, nếu bạn có một hàm có chứa quyền ghi đăng ký, hàm sẽ ném một System.Security.SecurityException
nếu bạn không chạy chương trình với tư cách quản trị viên. Nó được ngụ ý rằng bạn phải gọi hàm này ở đầu chương trình. Nếu ngoại lệ này được ném, bạn có thể thông báo cho người dùng để chạy chương trình với tư cách quản trị viên và đóng chương trình.
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);
}
}
Ở đây, true
phù rk = rk.OpenSubKey(registryPath, true)
nói với chương trình mà nó cần ghi vào sổ đăng ký.
Bản sao có thể có của [Cách buộc ứng dụng .NET của tôi chạy với tư cách quản trị viên?] (Http://stackoverflow.com/questions/2818179/how-to-force-my-net-application-to-run-as -administrator) – amens