我已经使用此代码运行我预先编译的C#应用程序:
type(self)
执行后ICLRMetaHost *p_meta_host = nullptr;
ICLRRuntimeInfo *p_runtime_info = nullptr;
ICLRRuntimeHost *p_clr_runtime_host = nullptr;
CLRCreateInstance(CLSID_CLRMetaHost, IID_PPV_ARGS(&p_meta_host));
p_meta_host->GetRuntime(L"v4.0.30319", IID_PPV_ARGS(&p_runtime_info));
p_runtime_info->GetInterface(CLSID_CLRRuntimeHost,
IID_PPV_ARGS(&p_clr_runtime_host));
p_clr_runtime_host->Start();
auto hr = p_clr_runtime_host->ExecuteInDefaultAppDomain(
L"C:\\somefolder\\test.exe",
L"InjectExample.Program",
L"EntryPoint",
L"hey!",
&p_return_value);
不是hr
而S_OK
返回GetLastError()
这一点肯定存在于ERROR_FILE_NOT_FOUND
中
任何想法为什么会发生这种情况?
--UPD。在调试日志中发现:
'C:\\somefolder\\test.exe'
答案 0 :(得分:0)
问题已解决。
显然hr
等于COR_E_MISSINGMETHOD
或0x80131513
这意味着我试图使用错误的方法。
有关返回代码的更多信息,请访问:
https://referencesource.microsoft.com/#mscorlib/system/__hresults.cs,c4f0369b78643cb0