Мне нужно, чтобы файл .reg и файл .msi выполнялись автоматически с использованием любых исполняемых файлов, с которыми связаны эти два типа файлов в пользовательской Windows.
.NET Core 2.0 Process.Start (строка fileName) в документах говорится: "имя файла не обязательно должно представлять исполняемый файл. Это может быть файл любого типа, расширение которого было связано с приложением, установленным в системе".
Однако
using(var proc = Process.Start(@"C:\Users\user2\Desktop\XXXX.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.
Я не могу указать точные пути к исполняемым файлам в качестве параметра метода, так как пользовательские среды являются вариантами (включая версии Windows) и находятся вне моего контроля. По этой же причине мне нужно перенести программу на .Net Core, чтобы она работала как консольное приложение SCD, чтобы не требовалась установка конкретной версии .Net Framework или .NET Core.
Исключение выдается как при запуске отладки Visual Studio, так и при публикации как win-x86 SCD. Мой ПК - Win7 64bit, и я уверен, что .reg и .msi связаны с обычными программами, как и обычный ПК с Windows.
Есть ли решение для этого? Любая помощь приветствуется.