Мне нужно, чтобы файл .reg и файл .msi выполнялись автоматически с использованием любых исполняемых файлов, с которыми эти два типа файлов связаны в Windows пользователя.
Процесс .NET Core 2.0 .Start (string fileName) docs говорит: «Имя файла не обязательно должно представлять исполняемый файл. Это может быть файл любого типа, для которого расширение было связано с приложением, установленным в системе».
тем не мение
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.
Я не могу указать точные пути к exe-файлам в качестве параметра метода, поскольку среды пользователей являются различными (включая версии Windows) и находятся вне моего контроля. Вот почему мне нужно перенести программу на .Net Core, пытаясь заставить ее работать как SCD, поэтому установка определенной версии .Net Framework или .NET Core не требуется.
Исключение возникает как при выполнении отладки Visual Studio, так и при публикации как win-x86 SCD. Мой компьютер - Win7 64bit, и я уверен, что .reg и .msi связаны с обычными программами, как и обычный ПК с Windows.
Есть ли решение для этого? Любая помощь приветствуется.