我有一个需要管理员权限的Windows C#应用程序。 我创建了一个app.manifest修改它添加
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
当我直接从我的电脑上运行时,一切正常,操作系统提示我UAC,一切正常。 现在,如果我将所有文件写入CD(或ISO映像),则某些命令不会以管理权限运行,从而导致错误。 特别是Directory.Delete,Directory.Copy(带有recoursive参数)不起作用。
我还尝试将默认的Delete方法包装成:
[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
public static void delete(string source, bool recursive)
{
if (Directory.Exists(source))
{
Directory.Delete(source, recursive);
}
}
但是我得到了“主要许可申请失败”。错误。
我还缺少其他吗?为什么在我的电脑上的目录上运行或从cd运行时应该有所不同?
谢谢, 法比奥
答案 0 :(得分:0)
.NET中有一种称为CAS(代码访问安全性)的东西。当来自其他来源时,CLR以不同的方式处理您的程序(因此本地Intranet,Internet和本地磁盘的处理方式不同)
从CD加载时,设置将恢复为权限较少的模式。
您可以在CAS here on MSDN上找到更多信息。
您可以通过添加和配置app.manifest文件来请求权限。