草庐IT

windows - 使用 Inno Setup 安装程序安装 Windows shell 扩展 DLL

我正在开发一个shell扩展DLL。我想使用InnoSetup安装程序安装它。我看到安装程序问,如果我想用程序安装shell扩展,我想使用InnoSetup安装程序进行类似的操作。我该怎么做呢?如果没有,你能指引我走上正确的道路吗?几天来我一直在搜索有关此的任何信息。 最佳答案 shell扩展只是一个带有COM类的DLL。所以只需部署它并使用regserverflag注册它:[Files]Source:"myext.dll";DestDir:"{app}";Flags:regserver另见RegisterExplorerCOMex

c++ - 以编程方式获取用于在非开发人员 Windows 环境中构建进程或库的 DLL 列表

我什至不确定这是否适用于Windows;我还没有看到一个人要求这么普遍的东西并找到解决方案。这可能是可能的,但可能没有用于处理它的API。我有一个自动化测试模块,我正在为Windows工作,它使用一个模块以通用方式处理检测到的EXE,除非它检测到二进制文件来自特定的测试框架。到目前为止,我只能通过查询帮助和处理响应/字符串解析来做到这一点。如果我触发某人在框架之外编写的长时间测试,该测试接受命令行参数寻求帮助,但实际上并不处理这些命令行参数而只是自动运行,这可能会导致问题。因此,有时我会卡在等待测试完成的时候,而不是进行闪电般的快速查询。这就是我试图通过这个花哨的新模块避免的。:)这个

windows - 某些 Windows DLL 显然如何同时支持 32 位和 64 位?

我似乎能够访问C:\WINDOWS\system32\opengl32.dll中的函数(同样C:\WINDOWS\system32\glu32.dll)来自32位或64位应用程序(为了它的值(value),我通过ctypes模块从单独的32位和64位Python2.7解释器执行此操作)。有了glut32.dll,事情就不一样了。它只是作为GraphViz的32位安装的一部分出现在我的Path上。在32位Python中,我可以动态链接到它,但在64位Python中,我得到[Error193]%1isnotavalidWin32application。现在,这个错误并不让我吃惊,因为我一直

windows - 调整示例 DLL 代码时获取无效图像

我使用示例代码从FASM示例目录创建一个简单的DLL,并根据我的需要对其进行调整。但是,当我进行一些(从我的POV来看是无辜的)更改时,生成的二进制文件被损坏-运行使用此库的exe会产生错误代码0xC000007B又名INVALID_IMAGE_FORMAT。动态链接库代码:;DLLcreationexampleformatPEGUI4.0DLLentryDllEntryPointinclude'win32a.inc'section'.text'codereadableexecutableprocDllEntryPointhinstDLL,fdwReason,lpvReservedmo

windows - NSIS 用 regsvr32 注册 DLL

我正在尝试在nsis安装程序中使用regsvr32注册DLL(目前没有静默):Exec'"$SYSDIR\regsvr32.exe""$SYSDIR\mp4mux.dll"'Exec'"$SYSDIR_32bit\regsvr32.exe""$SYSDIR_32bit\mp4mux.dll"'它显示DLL已注册的弹出窗口(32位和64位),并且在安装日志中它显示下一行:Execute:"C:\WINDOWS\system32\regsvr32.exe""C:\WINDOWS\system32\mp4mux.dll"//for32-bitissimilar但是,当我尝试使用它时,它不起作

c# - .NET 无法在同一目录中找到非托管 DLL

我有一个C++DLL库(我们称它为unmanaged.dll),它围绕着一个托管.NET库(我们称它为managed.dll)。managed.dll使用unmanaged.lib导入/链接unmanaged.dll。我有另一个使用managed.dll的ASP.NETWebAPI项目(我们称该项目为webapi.dll)。现在,每当我构建Web项目时,在输出目录中我都会得到webapi.dll和managed.dll。然后,我手动将unmanaged.dll复制到同一个输出文件夹中,以便(大概).NET可以找到它并加载它。但是,当我尝试运行webapi.dll时,它失败并显示无法加载

c - 为什么 Windows 要求导入 DLL 数据?

在Windows上,可以从DLL加载数据,但需要通过导入地址表中的指针进行间接访问。因此,编译器必须知道正在访问的对象是否是使用__declspec(dllimport)从DLL导入的。类型说明符。这很不幸,因为这意味着设计用作静态库或动态库的Windows库的header需要知道程序链接到哪个版本的库。此要求不适用于函数,这些函数是为DLL透明地模拟的,stub函数调用实际函数,其地址存储在导入地址表中。在Linux上,动态链接器(ld.so)将所有链接数据对象的值从共享对象复制到每个进程的私有(private)映射区域。这不需要间接寻址,因为私有(private)映射区域的地址是模

c - 如何在 C 中的 DLL 中执行线程

我创建了一个运行3个工作线程的DLL,主线程处于循环中等待线程完成。线程已创建,但未执行线程。我尝试在使用CreateThread()创建的函数中设置MessageBox函数,但该框没有出现。我也尝试过调试,CreateThread()的返回值有效,因此线程被创建。BOOLWINAPIDllMain(){main();return1;}intmain(){HANDLEh1,h2,h3;h1=CreateThread(first)...h2=CreateThread(second)...h3=CreateThread(third)...WaitForSingleObject(h3,INF

c++ - 如何在库加载时将预处理器定义传递给 DLL

我正在开发一个链接到DLL的应用程序,该DLL本身包含一个数据结构,其定义因预处理器定义而异:structExample{uint8_tStringA[32];#ifUSE_Buint8_tStringB[32];#endif};我需要在我的应用程序中的不同时间使用结构的两个版本。因此,我似乎需要使用LoadLibrary加载DLL,其中USE_B未定义用于部分执行(这是标准且直接的),使用FreeLibrary卸载它,然后然后使用定义为非零值的USE_B再次加载它。我不确定如何执行此操作,如有任何帮助,我将不胜感激。 最佳答案 L

windows - 如何从 dll 中获取应用程序名称?

如果我有一个被LoadLibrary加载到应用程序(bar.exe)中的dll(foo.dll),我如何从foo.dll中获取字符串“bar.exe”? 最佳答案 将NULL作为第一个参数传递给GetModuleFileName(). 关于windows-如何从dll中获取应用程序名称?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/873770/