从CD运行时需要管理员权限

时间:2014-01-13 14:41:30

标签: c# permissions privileges cd directory.delete

我有一个需要管理员权限的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运行时应该有所不同?

谢谢, 法比奥

1 个答案:

答案 0 :(得分:0)

.NET中有一种称为CAS(代码访问安全性)的东西。当来自其他来源时,CLR以不同的方式处理您的程序(因此本地Intranet,Internet和本地磁盘的处理方式不同)

从CD加载时,设置将恢复为权限较少的模式。

您可以在CAS here on MSDN上找到更多信息。

您可以通过添加和配置app.manifest文件来请求权限。