Процесс .Net Core 2.0.Старт выдает "указанный исполняемый файл не является действительным приложением для этой платформы ОС "
мне нужно .reg file и a .msi-файл выполняется автоматически, используя любые исполняемые файлы этих двух типов файлов, связанных с Windows пользователя.
процесс .NET Core 2.0.Пуск (строковое имя файла) docs говорит: "имя файла не должно представлять исполняемый файл. Это может быть любой тип файла, для которого расширение было связано с приложением, установленным в системе."
using(var proc = Process.Start(@"C:Usersuser2DesktopXXXX.reg")) { } //.msi also
дает мне
System.ComponentModel.Win32Exception (0x80004005): The specified executable is not a valid application for this OS platform.
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(String fileName)
С ErrorCode и HResult -2147467259 и NativeErrorCode 193.
тот же код работал в консольном приложении .Net Framework 3.5 или 4.
Я не могу указать точные пути к exe-файлу в качестве параметра метода, поскольку среды пользователей являются вариантными (включая версии Windows) и вне моего контроля. Вот почему мне нужно перенести программу в .Net Core, пытаясь заставить ее работать как SCD консольное приложение, чтобы установить конкретный .Net Версия Framework или .NET Core не требуется.
исключение возникает как при запуске отладки Visual Studio, так и при публикации как win-x86 SCD. Мой компьютер-Win7 64bit, и я уверен .reg и .msi связаны с обычными программами, как обычно Windows PC делает.
есть ли решение для этого? Любая помощь приветствуется.
2 ответов
вы должны Выполнить cmd.exe
var proc = Process.Start(@"cmd.exe ",@"/c C:\Users\user2\Desktop\XXXX.reg")
не забудьте /c
вы также можете установить UseShellExecute
собственность ProcessStartInfo
истина
var p = new Process();
p.StartInfo = new ProcessStartInfo(@"C:\Users\user2\Desktop\XXXX.reg")
{
UseShellExecute = true
};
p.Start();
кажется, изменение в .net Core, как документировано здесь.