gpt4 book ai didi

c# - 为什么我的 IL 生成的程序集,C# 调用的 ilasm.exe 需要 UAC?

转载 作者:行者123 更新时间:2023-12-04 00:46:06 25 4
gpt4 key购买 nike

我正在尝试将 IL 代码编译为程序集。 ilasm.exe应该被我的 C# 应用程序调用。我正在调用 ilasm.exe通过 ProcessStartInfo实例。 PE 的生成工作正常,我的程序集运行正常。

我的问题是我的应用程序创建的文件之后需要管理员权限才能执行。

如果我调用 ilasm.exe从命令行手动操作,不需要管理员权限。

使用的 ilasm.exe 命令: ilasm.exe /qui /output="c:\test\newFile.exe" <path to il file>

我的应用程序调用 ilasm.exe:

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = ilFilePath + " /qui /output=" + outputPath + "testFile.exe";


try
{
using (Process exeProcess = Process.Start(startInfo))
{
exeProcess.WaitForExit();
}
}
catch
{
// Log error.
}

我做错了什么吗?从 C# 调用另一个进程时是否需要指定任何其他内容?

我在没有管理员权限的情况下运行我的应用程序和命令行。

最佳答案

它需要 UAC,因为您没有在 output 中提供可写位置的路径,因此它试图写入 ilasm 所在的同一文件夹(或您应用程序的当前文件夹)。

非管理员用户对 %WINDIR%(Windows 文件夹)或 %ProgramFiles% 下的任何内容没有写入权限,因此它要求提升到对文件夹具有写入权限的用户。

关于c# - 为什么我的 IL 生成的程序集,C# 调用的 ilasm.exe 需要 UAC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10003301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com