草庐IT

AppInit_DLL

全部标签

c# - csc.exe 引用外部 .dll 文件

我正在尝试使用GrowlC#API制作一个简单的c#程序。我尝试用两种不同的方式编译我的程序:1)我将.dll文件保存在与.cs文件相同的目录中。比我跑得快csc/r:Growl.Connector.dll,Growl.CoreLibrary.dll/out:test.exe*.cs它编译良好,也运行良好。2)现在,我在当前工作目录中创建了一个名为growl的目录,并将我所有的.dll引用保存在那里。现在当我尝试使用下面的命令编译它时csc/r:"D:\Modified\Growl_NET_Connector_SDK\libraries\growl\Growl.Connector.dl

windows - 如果加载它的 DLL 被卸载,DLL 是否会被删除?

以标准Windows应用程序为例。它使用LoadLibrary加载DLL以调用其中的函数(我们将调用此DLL_A)。该函数加载另一个DLL(我们称之为DLL_B)。应用程序现在使用FreeLibrary卸载DLL_ADLL,因为它不再需要它。问题是:DLL_B是否仍在内存中并已加载?这是我可以依赖的东西,还是没有记录? 最佳答案 没有。DLL_B不会被卸载。DLL_A调用的LoadLibrary()将增加DLL_B的加载计数。由于DLL_B没有相应的FreeLibrary()调用,因此引用计数不会变为零。来自LoadLibrary(

c# - 检查系统中是否存在 DLL

快速提问。我想查明我的应用程序正在执行的系统中是否存在DLL。这在C#中可行吗?(以一种适用于所有Windows操作系统的方式?)对于DLL,我指的是非.NET经典dll(Win32dll)(基本上我想做一个检查,因为我使用的DLL可能存在也可能不存在于用户系统上,但我不希望应用程序在不存在时没有警告地崩溃:P) 最佳答案 调用LoadLibraryAPI函数:[DllImport("kernel32",SetLastError=true)]staticexternIntPtrLoadLibrary(stringlpFileName

windows - 用于查看可执行镜像加载了哪些文件/dll 的实用程序

我知道有一个实用程序,因为我以前用过它……只是记不起名字了。我正在寻找一个Windows(Windows-7)实用程序,它允许我选择一个正在运行的可执行镜像,并让它告诉我该程序从哪个目录加载了哪些文件/dll。我正在VisualStudio中编写软件,并希望在运行时验证我的程序正在加载哪些dll。 最佳答案 VisualStudio做得很好。使用工具>附加到进程,调试>全部中断。然后调试>Windows>模块。对于VS2015+,从调试>附加到进程开始。 关于windows-用于查看可执

c++ - 依赖于其他 DLL 的插件 DLL

我正在编写一个DLL以插入另一个(第3方)应用程序。DLL将需要依赖另一组DLL(出于许可原因,我无法静态链接)。我希望我的DLL可以“xcopy-deployable”到任何目录。我也不想要求将此目录添加到路径中。如果我只是以通常的方式构建DLL,Windows将拒绝加载DLL,因为它找不到当前进程旁边的DLL。是否有任何好的选项可以帮助Windows定位DLL?回答一些问题:DLL是用C++编写的。额外的DLL是QT-dll。我想将额外的DLL放在与我的插件DLL相同的文件夹中。我可以从GetModuleFileName获取该文件夹的名称。应用程序是Firefox,DLL是PKCS

c++ - VirtualProtect 和 kernel32.dll - 尝试访问无效地址

我正在分析进程加载的各种模块。不幸的是,我无法创建kernel32.dll内存快照,尽管该函数可以与其他模块(例如ntddl.dll)一起正常工作。问题在于以下代码:/*Copycodefrommemory*/if(VirtualProtect((BYTE*)virtualAddress,sizeOfCode,PAGE_EXECUTE_READWRITE,&flags)==0){std::cout为kernel32.dll调用这段代码的结果是:Virtualaddress:747d0000Sizeofcode:6a000Errorcode:0x1e7错误描述是这样说的:ERROR_IN

c++ - CreateProcess STATUS_DLL_NOT_FOUND - 哪个 dll?

我有一个调用CreateProcess的进程。CreateProcess似乎返回非零值,表示成功。但是,进程的HANDLE随后会立即设置,表明进程已退出。当我调用GetExitCodeProcess时,返回STATUS_DLL_NOT_FOUND。我知道缺少一个DLL。我什至确切地知道是哪一个。但是,我不明白的是如何以编程方式解决这个问题。我注意到Windows会显示一个对话框,提示进程启动失败,因为它找不到指定的DLL(屏幕截图:http://www.mediafire.com/view/?kd9ddq0e2dlvlb9)。在对话框中,Windows指定缺少哪个DLL。但是,我自己找

c++ - 一种从中央存储库加载 DLL 的方法

我们有很多产品,每个产品的应用程序都有一些通用的DLL。现在我们将每个公共(public)DLL复制到每个产品的bin目录中,并将它们视为私有(private)程序集。这不必要地增加了每个产品的msi大小,并且当DLL中出现问题时,我们必须构建每个产品的包含DLL的msi并部署它。有没有指示产品应用程序使用一个通用的私有(private)目录来加载DLL[使用list方案..]?[注意:将私有(private)目录添加到PATHenv不会提供解决方案,就好像SYSTEM目录中存在同名DLL一样,这将获得我们私有(private)目录的特权]-卡特利 最佳答案

windows - Delphi DllMain DLL_PROCESS_DETACH 在 DLL_PROCESS_ATTACH 之前调用

我在处理用Delphi编写的DLL时遇到了很多麻烦。我已经使用库中的以下代码设置了一个DllMain函数:beginDllProc:=DllMain;end.我的DllMain过程如下所示:procedureDllMain(reason:Integer);beginifreason=DLL_PROCESS_DETACHthenOutputDebugString('DLLPROCESSDETACH')elseifreason=DLL_PROCESS_ATTACHthenOutputDebugString('DLLPROCESSATTACH')elseifreason=DLL_THREAD

c++ - 在同一进程中加载​​多个 dll 拷贝

我有一个由第三方生成的dll,它具有某种内部数据结构,将其大小限制为X个元素。所以基本上,它有一个以X为限制的队列。据我所知,DLL是每个进程的,但是是否可以多次加载DLL?也许每个线程?在C#中?还是在C++/CLI中?我正在尝试加载nativeC++dll。 最佳答案 不幸的是,NT核心DLLloaderroutines不要公开公共(public)接口(interface)以跳过已加载的DLL池。因此,您只有几个选择:复制、硬链接(hardlink)、符号链接(symboliclink)和/或使用重解析点来欺骗加载器,让其认为您