如果我这样做:
try
{
try
{
Config.Register(
"anydescription",
"myprogram.exe",
"inject.dll");
}
catch (ApplicationException ex)
{
}
RemoteHooking.IpcCreateServer<interfaceppp>(ref ChannelName, WellKnownObjectMode.SingleCall);
RemoteHooking.Inject(pid, "inject.dll", "inject.dll", ChannelName);
}
catch (Exception ExtInfo)
{
}
我收到此错误:
STATUS_INVALID_PARAMETER_4:给定的32位库不存在!
我正在使用具有管理员权限的VS.在bin文件夹中,我有所有需要的文件AFAIK:
我已经添加了easyhook.dll和easyload32和64作为参考(为什么这两个新文件?没有看到任何文档谈论它们)。 谢谢!
PD:尝试了同样的结果:
System.EnterpriseServices.Internal.Publish publish = new System.EnterpriseServices.Internal.Publish();
publish.GacInstall("EasyHook.dll");
publish.GacInstall("EasyHook32.dll");
publish.GacInstall("EasyHook64.dll");
publish.GacInstall("EasyLoad32.dll");
publish.GacInstall("EasyLoad64.dll");
答案 0 :(得分:1)
我不知道为什么以前没有工作。显然问题是找不到一些组件。在互联网上阅读后,我看到了一个没有Config.Register
功能的例子。似乎最新版本(2.7)您无需在GAC中注册程序集。我只是评论了这个功能,但它确实有效。
答案 1 :(得分:1)
我有同样的问题,但有64位。
从GAC删除我的程序集和EasyHook解决了这个问题。
gacutil /uf EasyHook
gacutil /uf EasyLoad64
gacutil /uf MyAssembly
答案 2 :(得分:0)
如果您正在使用easyhook 2.7,则无需调用Config.Register
。因此,请按照其他答案告诉您的步骤进行操作:
从您的代码中删除以下行:
Config.Register(
"anydescription",
"myprogram.exe",
"inject.dll");
从gac删除以前注册的程序集:
gacutil /uf EasyHook
gacutil /uf EasyLoad64
gacutil /uf inject
谢谢大家。花了我很多时间弄清楚您需要同时做这两项。