3

我正在开发一个名为 的项目computer scanner,但是当我运行我的代码以扫描我的硬盘驱动器时,它给了我一个异常“ Access Denied to System Volume Information Folders”,并且还有一些其他文件夹也具有相同的行为,我无法访问它们。

在从 Internet 上研究了这个异常之后,我必须了解,在添加“清单文件”并将其选项更改为“需要管理员”之后,程序将以管理员身份运行,但不幸的是没有发生任何事情。 我正在使用一些代码,它允许我以管理员身份运行我的代码,但仍然向我显示相同的异常。

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

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

2 回答 2

4

您根本不能在代码中赋予自己管理员权限,那太荒谬了!您必须以管理员身份运行 Visual Studio,RightClick->run as admin 并且您的最终应用程序也必须以管理员身份运行。

使用这个: 如何强制我的 .NET 应用程序以管理员身份运行?

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

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

于 2012-12-03T06:59:39.300 回答
3

您可以使用 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" />

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

于 2019-05-15T13:45:28.320 回答