Я пытаюсь скомпилировать IL-код на собрание. ilasm.exe
должен быть вызван моим приложением C#. Я вызываю ilasm.exe
через экземпляр ProcessStartInfo
. Построение ПЭ прекрасно работает, и моя Ассамблея работает.Почему мой сборщик IL, ilasm.exe, вызываемый C#, нуждается в UAC?
Моя проблема в том, что файлы, которые были созданы моим приложением, впоследствии требуют прав администратора, которые должны быть выполнены.
Если я вызываю 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#?
Я запускаю свое приложение и командную строку без прав администратора.
Какая ошибка вы получаете как не-админ? Что такое patchFile? Вы не называете его идентично тому, как вы сказали, что вызываете его из командной строки. –
Извините, я забыл упомянуть некоторые вещи. patchFile - это путь к файлу, содержащему il-код. Я не получаю никаких ошибок. Ошибка заключается в том, что ilasm.exe вызывает код C#, после чего ему нужны права администратора для выполнения, тогда как запросы ilasm.exe через cmd им не нужны. –
Если я понимаю вас, вы говорите, что оба генерируют действительные EXE, но тот, который генерируется из 'Process.Start', заставляет ваш компьютер идти * BOOP * и вызывать приглашение UAC.Если это так, это похоже на то, что один из кода встраивает 'upperAvailable'' requestExecutionLevel', поясненный [здесь] (http://msdn.microsoft.com/en-us/library/bb756929.aspx). Если это так, я не знаю, почему это было бы иначе. –