我需要讓一個.reg文件和一個.msi文件自動使用與這兩種文件類型關聯的任何可執行文件執行用戶的Windows。.Net Core 2.0 Process.Start拋出「指定的可執行文件不是此OS平臺的有效應用程序」
.NET Core 2.0 Process.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)
與錯誤碼和的HResult -2147467259,和NativeErrorCode 193
相同的代碼在.Net框架沒有工作3.5或4控制檯應用程序。
由於用戶的環境是變體(包括Windows版本)並且不受我的控制,我無法指定確切的exe文件路徑作爲方法的參數。這也是爲什麼我需要將程序移植到.Net Core,試圖使其作爲SCD控制檯應用程序工作,以便不需要安裝特定的.Net Framework或.NET Core版本。
在Visual Studio調試運行和以win-x86 SCD發佈時都會引發異常。我的電腦是Win7 64bit,我確信.reg和.msi與平常的Windows PC一樣,與常規程序相關聯。
是否有解決方案?任何幫助表示讚賞。