【问题标题】:Doubts about Admin Privileges对管理员权限的怀疑
【发布时间】:2013-05-20 22:47:05
【问题描述】:

我制作了一个 WPF 应用程序,它读取/写入其他进程的内存、大量使用注册表项、读取/写入磁盘上的文件以及从网站下载/部署文件。大声笑不,这不是木马,别担心:D

它是在 Framework 4.5 下编译的,因此它通常只与 Windows Vista 或更高版本兼容,并且要正常工作,它需要管理员权限。现在......为了以透明的方式授予它所需的所有权限,我发现了各种各样的可能性谷歌搜索。我觉得比较简单的是:

1) 在清单中插入以下代码:

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

2) 检查 UAC 是否启用以及用户是否没有管理员权限,如果是这样,询问用户是否要授予应用程序管理员权限。然后,如果答案是“是”,则使用以下命令运行提升的应用程序进程:

ProcessStartInfo.Verb = "runas";

那么...处理这个问题的最佳方法是什么?

我还有一个问题。我的应用程序将在启动后从字节数组加载一个程序集:

Byte[] assemblyData;

using (BinaryReader reader = new BinaryReader(new FileStream(filePath, FileMode.Open)))
    assemblyData = reader.ReadBytes(Convert.ToInt32(fs.Length));

Assembly assembly = Assembly.Load(assemblyData);
MethodInfo method = assembly.EntryPoint;

if (method != null)
{
    Object instance = assembly.CreateInstance(method.Name);
    method.Invoke(o, null);
}

我的问题是......在上述代码 sn-p(另一个 WPF 应用程序)中从内存加载的程序集是否具有加载它的应用程序的相同权限?如果现在,我应该如何再次处理管理员权限?

【问题讨论】:

    标签: c# .net uac user-permissions elevated-privileges


    【解决方案1】:

    如果您的应用程序的大部分操作需要管理员权限,请使用

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

    如果您的应用程序需要管理员权限来执行 1-2 项很少发生的操作,请使用 AsInvoker 权限启动并提升您的应用程序以执行该特定操作。

    由于您正在读取的程序集已加载到您的进程内存中,它将具有与您的应用程序相同的权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-18
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-30
      相关资源
      最近更新 更多