【问题标题】:Requiring administrator privileges when running from CD从 CD 运行时需要管理员权限
【发布时间】:2014-01-13 14:41:29
【问题描述】:

我有一个需要管理员权限的 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);
    }
}

但我收到“请求主体权限失败”。错误。

还有其他我想念的吗?为什么在我电脑的目录上运行或从 cd 运行时会有所不同?

谢谢, 法比奥

【问题讨论】:

  • 您可以从 CD 中删除文件吗?目录?
  • “从 CD 中删除文件”是什么意思?
  • 我的意思是你不能从我上次检查的光盘中删除文件/目录...你想从 CD 中删除吗?顺便说一句,也没有创建
  • 是的,从挂载的 iso 映像运行我的程序(希望它与在物理 cd 上运行的程序相同)我可以在本地计算机上创建一个目录。问题是我无法删除或修改某些文件并在发生某些事情时删除目录
  • 是的,我明白了,很抱歉在这里无法为您提供帮助...

标签: c# permissions privileges cd directory.delete


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 2013-03-04
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多