我已经使用x64构建将32位COMdll转换为64位dll。我尝试注册这个64位dll到64位Windows2008服务器uisngC:windows\system32regsrv32.exe中。但是我收到一条错误消息“Dllregister服务器失败,错误代码为0x80029c4a”。我如何在64位操作系统中注册此dll。 最佳答案 该错误代码是TYPE_E_CANTLOADLIBRARY这可能意味着调用了LoadTypeLib()在DllRegisterServer()的某处,该调用因任何原因失败。一个可能的原因是库没有添加到D
我目前正致力于通过dll注入(inject)Hookntdll.dll调用。首先,我通过CreateRemoteThread()在现有进程中创建线程然后我通过LoadLibrary加载我的dll最后HookPROCESS_ATTACH.注入(inject)工作正常,但我想记录所有注册表和文件系统查询。问题是它无法正常工作。我决定通过PasteBin发布代码,因为代码量很大。链接在这里:http://pastebin.com/39r4Me6B我正在尝试HookZwOpenKey,然后记录关键内容,然后通过指针启动“真实”功能。函数NOpenKey被执行,但进程停止,没有任何错误。有人看到
我正在使用第三方Active-X控件,该控件需要在用户系统上安装特定版本的MFC42.dll。我正在尝试为我的产品的非管理员安装添加支持,并且必须安装例如mfc42.dll到系统文件夹并注册它显然使这不可能。第三方Active-X使用manifest文件作为免注册COM,想知道是否可以对MFC42.dll和MSVCRT.DLL做同样的操作,将它们存放在应用程序文件夹中?有人试过这个吗? 最佳答案 这是不可能的。MSVCRT和MFC42.dll不是COM对象,甚至不是win32程序集,因此不能使用无注册COM访问。您可以安装mfc42
我有VS2008。我升级到VS2010,然后卸载了VS2008。我有一个在我的机器上运行的测试,但无法在构建实验室的机器上加载。经过一些调试后,我意识到测试可执行文件仍然依赖于msvcr90d.dll(这是一个VC++2008调试运行时库)。即使我已经卸载了VS2008,该测试在我的机器上仍然有效,因为该运行时DLL仍然存在于并行缓存(%windir%/winsxs)中。构建实验室机器没有DLL,因此不会在那里加载。卸载VS2008不应该导致其所有运行时DLL从并排缓存中删除吗?有没有办法可以从并行缓存中手动删除这些旧的DLL?我希望能够轻松检测到我可能仍然有过时依赖项的其他地方。
我一直在研究调用堆栈,我注意到有时我会遇到FPO帧。dbgHelp可以以某种方式找出每个帧的结束位置及其符号,但我没有DLLS的PDBS,例如kernel32等。Windows中的系统DLL是否包含FPO数据?在客户的计算机上使用我的程序时可以依赖它吗?它们是否包含任何其他调试信息? 最佳答案 如果将符号路径设置为://msdl.microsoft.com/download/symbols,则系统DLL的公共(public)符号可用。IIRC许多Windows组件都是在关闭FPO的情况下编译的。但是你到底想完成什么?您在寻找什么“调
我有一个内置于32位和64位的共享dll。两个版本都使用相同的名称foo.dll。如何在系统上同时安装foo.dll,以便我的32位和64位应用程序在其路径中找到正确的dll。Windows本身使用SysWOW64(用于32位dll)和System32(用于64位dll)。我想避免部署到这些文件夹。让两个位的dll在同一个盒子上共存并被链接到它们的适当应用程序找到的公认方式(如果有的话)是什么? 最佳答案 如果您不部署到受文件重定向影响的文件夹(即system32),那么您几乎需要为DLL指定不同的名称。这样做的原因是DLL搜索路径
我在一个dll文件中有一个函数指针(在实现中,而不是头文件中)。在exe源码中如何调用this指针指向的函数? 最佳答案 您可以导出返回指针的函数。header:typedefvoid(*MyPtr)();__declspec(dllexport)MyPtrGetMyPtr();来源:MyPtrGetMyPtr(){//retunrthefunctionpointerhere} 关于c-从dll导出函数指针,我们在StackOverflow上找到一个类似的问题:
我收到错误:lib/ruby/1.9.1/win32/registry.rb:172:in`find':unknownencodingname-CP0(ArgumentError)启动Selenium时。我在带有Helioseclipse的Windows7上运行。这是ruby代码:require'rubygems'require'selenium-webdriver'driver=Selenium::WebDriver.for:firefox我看到了关于eMacsheader的帖子,但看不出它在这种情况下如何应用。 最佳答案 在启动
我想使用只有Vista或更高版本的操作系统支持的dll中的函数。因为我用的是XP,不想升级到Vista或者Win7。有没有一种方法可以使用dlls/api函数在我当前XP上安装的VS08中进行编码? 最佳答案 如果您安装了WindowsSDK,您应该能够为更高版本的Windows制作二进制文件。不过,您将无法运行。http://www.microsoft.com/download/en/details.aspx?id=3138 关于c++-在安装了VS08的旧XP中使用最新的dll函数,
我在使用xperf跟踪获取完整调用堆栈时遇到了一些问题。这是在Win764位电脑上。在更高层次上,我有一个加载多个dll的exe,它们也完成了大部分工作。所有pdb文件都在一个目录中,并且我在可执行代码中获得了有效的符号和调用堆栈,因此我非常确定我的符号路径设置正确。只要我的exe调用其中一个加载的dll,我就会丢失调用堆栈信息并且堆栈列显示plugin_name.dll!?,它在展开时会调用自身。权重选项卡显示高百分比(50-90%)和高计数,但我无法获得堆栈的任何实际函数调用。例如:Process,Stack,Module,Function,Weight,%Weight,Count