我正在尝试将 IL 代码编译为程序集。ilasm.exe
应该由我的 C# 应用程序调用。我正在ilasm.exe
通过ProcessStartInfo
实例调用。PE的生成工作正常,我的Assembly正在工作。
我的问题是我的应用程序创建的文件,之后需要管理员权限才能执行。
如果我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# 调用另一个进程时是否需要指定其他任何内容?
我正在运行我的应用程序和没有管理员权限的命令行。