C# 如何要求并确保程序有管理员权限启动,并可以删除隐藏的文件?
各位开发者好 我试图给我正在创建的C#应用程序提供从闪存驱动器或其他文件夹中删除文件的能力,这需要管理员权限。但它不起作用 我是Win10机器上的管理员用户。我可以在文件资源管理器中删除文件。但是程序在尝试执行时抛出IOException(我正在使用几种方法中的任何一种来删除文件,包括与Win32的互操作) 我确实为程序项目创建并嵌入了一个应用程序清单(我使用的是Visual Studio 2017),并将requestedExecutionLevel元素的级别属性设置为“requireAdministrator”。在项目属性中,它确实显示了这个文件app.manifest,作为它的一部分。但这似乎一事无成——该程序仍然可以启动,而不是以管理员身份启动 顺便说一句,我看到两种不同的方法来检测程序是否以管理员权限运行:C# 如何要求并确保程序有管理员权限启动,并可以删除隐藏的文件?,c#,.net,visual-studio,windows-10,admin,C#,.net,Visual Studio,Windows 10,Admin,各位开发者好 我试图给我正在创建的C#应用程序提供从闪存驱动器或其他文件夹中删除文件的能力,这需要管理员权限。但它不起作用 我是Win10机器上的管理员用户。我可以在文件资源管理器中删除文件。但是程序在尝试执行时抛出IOException(我正在使用几种方法中的任何一种来删除文件,包括与Win32的互操作) 我确实为程序项目创建并嵌入了一个应用程序清单(我使用的是Visual Studio 2017),并将requestedExecutionLevel元素的级别属性设置为“requireAdmi
public bool IsRunAsAdmin1()
{
return Thread.CurrentPrincipal.IsInRole( WindowsBuiltInRole.Administrator.ToString() );
}
这似乎不起作用(总是返回false)。
和
- 这确实有效
谢谢你的帮助和见解,詹姆斯我不知道你说的是什么意思 该程序仍可以非管理员身份启动 如果正确设置了
app.manifest
文件(请参阅),则它将始终以管理员身份运行
我不确定隐藏的文件。我的快速建议是删除隐藏/只读标志(like),然后调用
文件。删除我不知道你说的是什么意思
该程序仍可以非管理员身份启动
如果正确设置了app.manifest
文件(请参阅),则它将始终以管理员身份运行
我不确定隐藏的文件。我的快速建议是删除隐藏/只读标志(如),然后调用文件。删除您所能做的就是告诉用户“以管理员身份运行”。你不能在这里编程。它会让病毒像地狱一样传播看看System.Security.Permissions.FileIOPermission。如果他们是管理员角色,他们应该能够要求“AllAccess”,然后做他们需要的事情-我相信即使程序不是以“以管理员身份运行”启动的(我在prod中使用它没有问题-我的人从不以“以管理员身份运行”)。。。(注意-我们不删除隐藏的-不过值得一试)您所能做的就是告诉用户“以管理员身份运行”。你不能在这里编程。它会让病毒像地狱一样传播看看System.Security.Permissions.FileIOPermission。如果他们是管理员角色,他们应该能够要求“AllAccess”,然后做他们需要的事情-我相信即使程序不是以“以管理员身份运行”启动的(我在prod中使用它没有问题-我的人从不以“以管理员身份运行”)。。。(注意-我们不删除隐藏的-但值得一试)
public bool IsRunAsAdmin2()
{
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal( id );
return principal.IsInRole( WindowsBuiltInRole.Administrator );
}