我制作了一个 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);
}
我的问题是......在上述代码片段(另一个 WPF 应用程序)中从内存加载的程序集是否具有加载它的应用程序的相同权限?如果现在,我应该如何再次处理管理员权限?