如何在C#中授予管理员对代码的权限

时间:2012-12-03 06:37:33

标签: c#-4.0

朋友我正在处理一个名为computer scanner的项目,但是当我运行我的代码以扫描我的硬盘时,它给了我一个例外" Access Denied to System Volume Information Folders"还有一些其他文件夹具有相同的行为我无法访问它们,在从互联网上研究这个例外之后,我必须了解添加" Manifest File"并将其更改为"要求管理员"对于该程序将作为一个管理员运行但不幸的是没有发生这样的事情。
我正在使用一些代码,这些代码允许我以管理员身份运行我的代码,但仍然向我显示相同的异常。 请提前感谢我提供紧急帮助:)

WindowsIdentity CurrentIdentity = WindowsIdentity.GetCurrent();
                WindowsPrincipal CurrentPrincipal = new      WindowsPrincipal(CurrentIdentity);

                if (CurrentPrincipal.IsInRole(WindowsBuiltInRole.Administrator))
{
//Scanning Code will Execute
}

2 个答案:

答案 0 :(得分:2)

你根本不能在代码中给自己管理员权限,这太荒谬了!您必须通过RightClick->run as admin以管理员身份运行visual studio 并且您的最终申请也必须以管理员身份运行。

使用这个: How do I force my .NET application to run as administrator?

以强制用户以管理员身份运行。

这不会使应用程序以管理员身份运行,但会提升用户,以便应用程序要求用户在应用程序启动期间以管理员身份运行

答案 1 :(得分:1)

您可以使用ClickOnce安全设置创建清单,然后将其禁用:

Right click on the Project -> Properties -> Security -> Enable ClickOnce Security Settings

单击它后,将在项目的属性文件夹下创建一个名为app.manifest的文件,创建后,您可以取消选中“启用ClickOnce安全设置”选项

打开该文件并更改此行:

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

收件人:

 <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

这将使该程序需要管理员权限。