0

我有一个需要管理员权限的 Windows C# 应用程序。我创建了一个 app.manifest 修改它添加

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

当我直接从我的电脑运行它时,一切正常,操作系统提示我 UAC,一切正常。现在,如果我将所有文件写入 CD(或 iso 映像),某些命令无法以管理权限运行,从而导致错误。特别是 Directory.Delete、Directory.Copy(带有递归参数)不起作用。

我还尝试包装默认的 Delete 方法,执行以下操作:

[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
public static void delete(string source, bool recursive)
{
    if (Directory.Exists(source))
    {
        Directory.Delete(source, recursive);
    }
}

但我收到“请求主体许可失败”。错误。

还有其他我想念的吗?如果在我的 pc 的目录上运行或从 cd 运行,为什么会有所不同?

谢谢,法比奥

4

1 回答 1

0

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

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

您可以在 MSDN上找到更多关于 CAS的信息。

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

于 2014-01-13T14:50:10.680 回答