您将要修改嵌入在程序中的清单。这适用于 Visual Studio 2008 及更高版本:Project + Add New Item,选择 “Application Manifest File”。将<requestedExecutionLevel>
元素更改为:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
用户在启动程序时会收到UAC提示。明智地使用; 他们的耐心很快就会消失。
将requestedExecutionLevel
元素添加到清单只是成功的一半; 你必须记住UAC可以关闭。如果是,则必须执行旧学校方式的检查,如果用户不是管理员,则会设置错误对话框
(在线程的CurrentPrincipal
上调用IsInRole(WindowsBuiltInRole.Administrator)
)。
我实现了一些手动执行的代码:
using System.Security.Principal;
public bool IsUserAdministrator()
{
bool isAdmin;
try
{
WindowsIdentity user = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(user);
isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
}
catch (UnauthorizedAccessException ex)
{
isAdmin = false;
}
catch (Exception ex)
{
isAdmin = false;
}
return isAdmin;
}