dll文件详解

dll文件详解
dll文件详解

DLL 文件详解

Part1

dll文件与exe文件的区别:

动态链接库(Dynamic Link Library,缩写为DLL)

是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件的扩展名一般是dll,也有可能是drv、sys和fon,它和可执行文件(exe)非常类似.

具体说:

DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。动态链接是相对于静态链接而言的。所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。

而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。

共有三种动态链接库的形式:Win32DLL,MFC常规DLL和MFC拓展DLL

1、Win32DLL使用的是Win32的API实现的,只能导出函数,能被各种应用程序调用,适用范围最广。WIN32 DLL 是纯C++ API 写的,体积也比较小。

一般做MFC程序时,选用MFC DLL,MFC常规DLL没有显性DLLMAIN。MFC DLL 使用了MFC 体积比较大,MFC DLL本身也分为两种,一种是常规DLL,一种是扩展DLL。

2.MFC常规DLL是适用MFC创建的,就像MFC程序跟Win32程序的关系一样,MFC常规DLL 和Win32DLL的关系也是如此。它使用MFC的机制,只能导出标准C函数。如此,它便可以被大部分Win32程序调用。

3.MFC拓展DLL也也使用的是MFC机制创建的,相比于MFC常规DLL,拓展DLL可以导出C++类和MFC派生类,如此扩大了DLL的接口范围。此长彼消,MFC拓展DLL的适用范围较小,只能被MFC程序调用。因为它导出的不只是函数,还有C++类和MFC派生类。

三者区别展开来说:

MFC DLL 和win32 DLL的差别就是一个使用MFC类库,一个不使用,如果你代码中用到的MFC,那么一定要创建MFC DLL,因为win32 DLL用不了MFC类。

MFC常规DLL在DLL内部可以用MFC类的,但是给外部的接口并不提供MFC类的支持,还是

提供Win32 DLL同样的接口,与Win32的差别在于,它的内部可以用MFC类。扩展DLL可以有C++的接口,它可以导出C++类给客户端。导出的函数可以使用C++/MFC数据类型做参数或返回值,导出一个类时客户端能创建类对象或者派生这个类。同时,在DLL中也可以使用MFC。

MFC扩展DLL是通常实现从现有Microsoft基础类库类派生的可重用类的DLL。

MFC扩展DLL具有下列功能和要求:

1 客户端可执行文件必须是用定义的_AFXDLL编译的MFC应用程序。

2 扩展DLL也可由动态链接到MFC的规则DLL使用。

3 扩展DLL应该用定义的_AFXEXT编译。这将强制同时定义_AFXDLL,并确保从MFC头文件中拉入正确的声明。它也确保了在生成DLL时将AFX_EXT_CLASS定义为__declspec(dllexport),这在使用此宏声明扩展DLL中的类时是必要的。

4 扩展DLL不应实例化从CWinApp派生的类,而应依赖客户端应用程序(或DLL)提供此对象。

5 但扩展DLL应提供DllMain函数,并在那里执行任何必需的初始化。

扩展DLL是使用MFC动态链接库版本(也称作共享MFC版本)生成的。只有用共享MFC 版本生成的MFC可执行文件

(应用程序或规则DLL)才能使用扩展DLL。客户端应用程序和扩展DLL必须使用相同版本的MFCx0.dll。使用扩展DLL,可以从MFC派生新的自定义类,然后将此“扩展”版本的MFC提供给调用DLL的应用程序。

具体执行时,主要是资源的管理:mfc扩展dll会把当前dll的句柄加入一个全局资源句柄列表。而普通的dll则不会。即使支持mfc也不会,这样你每次用mfc类创建资源的时候要多写几行代码。但你用在mfc扩展dll用win32来访问资源也需要多写代码。

==============================================================

扩展DLL 可以导出类

扩展DLL服务器方的类定义:

class AFX_CLASS_EXPORT 到出类名: public 基类名

{

............

}

扩展DLL客户方的类声明头文件:

#pragma comment(lib,"lib文件名")

class AFX_CLASS_IMPORT 到出类名: public 基类名

{

............

}

==============================================================

常规DLL 可以导出标准C语言函数

常规DLL服务器方的函数定义:

//

头文件中函数声明

extern "C" __declspec(dllexport)

返回值函数名

(

形式参数声明

)

//源文件中函数实现

extern "C" __declspec(dllexport)

返回值函数名

(

形式参数声明

)

AFX_MANAGE_STATE ( AfxGetStaticModuleState() );// 第一条语句

..............

//

在def模块文件中声明函数序号

EXPORTS 导出函数名 @序号数字

常规DLL客户方的隐式函数声明头文件:

======================================================

另外,所有的动态链接库都有两种链接方式:隐式调用和显示调用。

隐式调用

编译程序时需要头文件、lib文件,运行时需要DLL文件,并且运行过程中DLL文件一直被占用。

显式调用

编译时什么都不需要,在需要使用DLL中的函数时,通过LoadLibrary()和FindProcAdress()这两个API调用。只需要一个DLL文件即可,而且在需要使用的时候DLL才被占用,使用完毕即被解除占用。DLL中有哪些函数可以通过Depends工具查询。

==================================================================

Part2

如何制作生成dll文件?

一.Win32动态链接库

1.制作的步骤:

(1)新建WIN32 Dynamic-link Library工程,工程名为MyDll,选择A simple DLL project 类型。

(2)MyDll.h的内容如下:

以下是引用片段:

extern "C" _declspec(dllexport) int sum(int a,int b);//本文所有的例子只有一个sum即加法函数。

(3)MyDll.cpp的内容如下:

以下是引用片段:

#include "stdafx.h"

#include "windows.h"

#include "MyDll.h"

BOOL APIENTRY DllMain(

HANDLE hModule,

DWORD ul_reason_for_call,

LPVOID lpReserved

)

{

return TRUE;

}

extern "C" _declspec(dllexport)int sum(int a, int b)

{

return a+b;

}

(4)编译之后产生了MyDll.lib与MyDll.dll两个文件。

2.使用方法:

(1).隐式调用法:将MyDll.lib和MyDll.h拷贝到需要应用该DLL的工程的目录下,将MyDll.dll拷贝到产生的应用程序的目录下,并在需要应用该DLL中的函数的CPP文件中添加如下几行:

以下是引用片段:

#include "MyDll.h"

#pragma comment(lib,"MyDll");

(2).显示调用法:将MyDll.lib和MyDll.h拷贝到需要应用该DLL的工程的目录下,将MyDll.dll拷贝到产生的应用程序的目录下,并在需要应用该DLL中的函数的CPP文件中包含头文件,如:

以下是引用片段:

#include "MyDll.h"

同时还需要在Project->Setting->Link->Object/library modules的框中增加MyDll.lib这个库。

二.MFC动态链接库

1.制作的步骤:

(1)新建MFC AppWizard(dll)工程,工程名为MFCDll,选择Regular DLL using shared MFC DLL类型。

(2)在生成的MFCDll.cpp文件后面增加下面几行:

以下是引用片段:

int sum(int a, int b)

{

return a+b;

}

(3)在生成的MFCDll.def文件后面增加如下:

以下是引用片段:

sum @1 ;表示第一个函数是sum

(4)编译后会产生两个文件MFCDll.lib,MFCDll.dll

2.使用方法

(1)隐式调用法:将MFCDll.lib拷贝到需要应用该DLL的工程的目录下,将MyDll.dll 拷贝到产生的应用程序的目录下,并在需要应用该DLL中的函数的CPP文件中添加如下几行:

//注意这里没有在MFCDll.h中声明函数,所以不能直接包含MFCDll.h来声明函数。

以下是引用片段:

#pragma comment(lib,"MFCDll");

int sum(int a, int b);

//当然如果你的DLL中有很多函数,那可以另外写个MFCDll.h,包含所有的函数声明,然后直接将头文件包含进去

(2)显示调用法:与Win32的调用方法一样,不需要#pragma comment(lib,"MFCDll");,但是需要在Project->Setting->Link->Object/library modules的框中增加MFCDll.lib这个库。

==========================================================

另一个例子:

具体在写DLL文件头文件中一般如此:

#ifdef DLL_EXPORT

#define DECLDIR __declspec(dllexport)

#else

#define DECLDIR __declspec(dllimport)

#endif

extern "C"

{

DECLDIR void alert();

}

这样使得在定义了DLL_EXPORT的环境下,头文件中,函数为导出;相反为导入。

于是,我们可以使用同一个头文件。此时是在写DLL,还是在使用DLL,只需要通过这个开关

来告诉编译器就可以了。

实现cpp中一般这么写:

#include "stdafx.h"

#define DLL_EXPORT

#include "MyHead.h"

extern "C"

{

DECLDIR void alert()

{

MessageBoxA(NULL, "Hello,World!", 0, 0);

}

}

在引用头文件前定义DLL_EXPORT,告诉编译器此时这些函数需要导出。

隐式调用

#include "stdafx.h"

#include "MyHead.h"

#pragma comment(lib,"MyTestDLL.lib")

int _tmain(int argc, _TCHAR* argv[])

{

alert(); // 直接调用

return 0;

}

由于我们没有定义DLL_EXPORT,那么头文件中的函数就会被从DLL中导入。显式调用

#include "stdafx.h"

#include

typedef void (*alert)();

int _tmain(int argc, _TCHAR* argv[])

{

alert func = NULL;

HINSTANCE h = LoadLibraryA("MyTestDLL.dll");

if (h)

func = (alert)GetProcAddress(h, "alert");

if (NULL != func)

func();

FreeLibrary(h);

return 0;

}

首先定义函数指针类型,然后实例化一个该类型的函数。最后调用即可。

Win7获得权限替换System32文件夹里dll文件的方法

Win7获得权限替换System32文件夹里dll文件的方法: 1、打开记事本,输入下列文本: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\runas] @="获取权限" "NoWorkingDirectory"="" [HKEY_CLASSES_ROOT\*\shell\runas\command] @="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F" "IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F" [HKEY_CLASSES_ROOT\Directory\shell\runas] @="获取权限" "NoWorkingDirectory"="" [HKEY_CLASSES_ROOT\Directory\shell\runas\command] @="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t" "IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t" 2、然后保存为导入.reg文件; 3、然后双击导入.reg; 此时会弹出警告提示,允许程序通过即可; 4、然后选择System32文件夹,鼠标右键选择获取权限。

dll文件打开方式

一、DLL文件常识DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:WindowsSystem目录下 二、修改DLL文件的具体应用在系统的组策略和注册表中,我们可以修改一些键值来优化我们的系统,并加强操作系统的安全性。可是,对于限制下载、禁止删除文件等功能,我们无法通过上述的操作来完成,这只有通过修改系统DLL文件来实现。目前,我们通过修改系统的DLL文件,可以实现禁止删除文件、禁止IE下载、禁止IE另存为、禁止文件打开方式等功能。 三、系统中部分DLL文件的功能1、Browselc.dll IE所需要调用的库文件DLL结构雏形就是它了2、Shdoclc.dll 系统窗口及设置等,如删除文件、重命名3、Shell32.dll 系统窗口及设置等,如删除文件、重命名4、Cryptui.dll IE控件下载及提示对话框程序 四、修改DLL文件的方法1、下载DLL文件修改工具EXESCOPE6.0 - 6.3或6.4工具2、获取Browselc.dll、Shdoclc.dll、Shell32.dll和Cryptui.dll这几个链接文件。在找这几个文件时,最好将其他机器的硬盘,挂接在本机中,然后用本机的操作系统启动并复制这几个文件。3、在修改DLL文件的时候,打开该键值,在右面的对话框中将所要修改的键值禁用即可,不要删除,以备日后恢复(如图) 五、DLL文件修改秘籍1、禁止下载的修改方法: 打开Shdoclc.dll修改资源--对话框---4416,将4416键值禁用即可。2、禁止网页添加到收藏夹,打开Shdoclc.dll修改资源--对话框---21400,将该键值禁用即可。3、禁止恶意网页加载控件,修改Cryptui.dll文件,要同时修改5个地方才能完全禁止资源--对话框---130 资源--对话框---230 资源--对话框---4101 资源--对话框---4104 资源--对话框---4107 将以各对话框中的相应键值,修改成为禁用就可以了。4、禁止系统删除文件修改Shell32.dll,这个文件需要修改5个地方才可以禁止系统删除文件。资源--对话框---1011 资源--对话框---1012 资源--对话框---1013 资源--对话框---1021 资源--对话框---1022 将以上五个地址的键值禁用就可以了! 5、禁止文件被改名,修改shell32.dll,有2个地方需要修改资源--对话框---1018 资源--对话框---1019 将以上两处的相应键值,修改为禁用就可以了! 6、禁止运行菜单,修改shell32.dll,将资源--对话框---1018键值设置为禁用。7、禁止系统文件被挪动修改shell32.dll,需要修改4个地方资源--对话框---1014 资源--对话框---1015 资源--对话框---1016 资源--对话框---1017 8、禁止目标另存为,修改Shdoclc.dll文件,需要修改3个地方资源--菜单--258---257 资源--菜单--258---252 资源--菜单--24641--2268 在这个修改中,我们要把各对应的键值删除。打开该键值后,右键菜单中有删除。在资源--菜单--24641-2268中,有多项该键值,请逐一删除。9、禁止自定义文件夹选项修改Shell32.dll文件,需要修改以下4个地方资源--菜单--215---28719 资源--菜单--216---28719 资源--菜单--217---28719 资源--菜单--216---28719 找到以上四处键值,直接需要删除后即可,而不是禁用。10、禁止IE文件夹选项,修改Browselc.dll文件,需要修改3个键值资源--菜单--263 (这里有多个请删除)---41251(删除) 资源--菜单--266(也有多个请删除)---41329 (删除) 资源--菜单--268---41251 (删除) 在上面的3个键值中,个别键值有多处,请逐一删除。11、禁止98文件共享控件,修改Msshrui.dll,需要修改2个地方资源---对话框---- 1 --- AutoRadioButton 资源---对话框---- 30 --- AutoRadioButton 将以上两处的键值禁

lib和dll文件的区别和联系

(1)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够了。 在开发和调试阶段,当然最好都有。 (2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。 (3)在动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。从上面的说明可以看出,DLL和.LIB文件必须随应用程序一起发行,否则应用程序将会产生错误。 一、开发和使用dll需注意三种文件 1、 dll头文件 它是指dll中说明输出的类或符号原型或数据结构的.h文件。当其它应用程序调用dll时,需要将该文件包含入应用程序的源文件中。 2、 dll的引入库文件 它是dll在编译、链接成功后生成的文件。主要作用是当其它应用程序调用dll时,需要将该文件引入应用程序。否则,dll无法引入。 3、 dll文件(.dll) 它是应用程序调用dll运行时,真正的可执行文件。dll应用在编译、链接成功后,.dll文件即存在。开发成功后的应用程序在发布时,只需要有.exe文件和.dll文件,不必有.lib文件和dll头文件。 动态链接库 (DLL) 是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 副本的内容。 动态链接与静态链接的不同之处在于:动态链接允许可执行模块(.dll 文件或 .exe 文件)仅包含在运行时定位 DLL 函数的可执行代码所需的信息。在静态链接中,链接器从静态链接库获取所有被引用的函数,并将库同代码一起放到可执行文件中。 使用动态链接代替静态链接有若干优点。DLL 节省内存,减少交换操作,节省磁盘空间,更易于升级,提供售后支持,提供扩展 MFC 库类的机制,支持多语言程序,并使国际版本的创建轻松完成。 lib与dll文件最大区别在调用方面 dll可以静态陷入 lib与DLL 从这一章起,我讲述的内容将特定于windows平台。其实这篇文章也可看作是我在windows下的开发经验总结,因为以后我决定转unix了。 前面有一章说编译与链接的,说得很简略,其实应该放到这一章一块儿来说的。许多单讲

dll文件查看方法

步骤1 检测壳 壳的概念: 所谓“壳”就是专门压缩的工具。 这里的压缩并不是我们平时使用的RAR、ZIP这些工具的压缩,壳的压缩指的是针对exe、com、和dll等程序文件进行压缩,在程序中加入一段如同保护层的代码,使原程序文件代码失去本来面目,从而保护程序不被非法修改和反编译,这段如同保护层的代码,与自然界动植物的壳在功能上有很多相似的地方,所以我们就形象地称之为程序的壳。 壳的作用: 1.保护程序不被非法修改和反编译。 2.对程序专门进行压缩,以减小文件大小,方便传播和储存。 壳和压缩软件的压缩的区别是 压缩软件只能够压缩程序 而经过壳压缩后的exe、com和dll等程序文件可以跟正常的程序一样运行 下面来介绍一个检测壳的软件 PEID v0.92 这个软件可以检测出 450种壳 新版中增加病毒扫描功能,是目前各类查壳工具中,性能最强的。 另外还可识别出EXE文件是用什么语言编写的VC++、Delphi、VB或Delphi等。支持文件夹批量扫描 我们用PEID对easymail.exe进行扫描 找到壳的类型了 UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo 说明是UPX的壳 下面进行 步骤2 脱壳 对一个加了壳的程序,去除其中无关的干扰信息和保护限制,把他的壳脱去,解除伪装,还原软件本来的面目。这个过程就叫做脱壳。 脱壳成功的标志 脱壳后的文件正常运行,功能没有损耗。 还有一般脱壳后的文件长度都会大于原文件的长度。 即使同一个文件,采用不同的脱壳软件进行脱壳,由于脱壳软件的机理不通,脱出来的文件大小也不尽相同。 关于脱壳有手动脱壳和自动脱壳 自动脱壳就是用专门的脱壳机脱很简单按几下就 OK了 手动脱壳相对自动脱壳需要的技术含量微高这里不多说了

如何注册DLL文件

将您下载的"*. DLL" 文件复制到"C:\Windows\system32\" 系统目录下然后按"Win键+R" 或单击"开始"->"运行" 输入"regsvr32 *.dll" 命令注册到系统文件。适用于Windows95/98/xp/2000/vista/win7. 如何注册Windows\system32\下的所有.dll和.ocx文件? 在开始->运行(win+r)下输入命令: cmd /c for %i in (%windir%\system32\*.dll) do regsvr32.exe /s %i cmd /c for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i Regsvr 32命令详解(DLL、OCX、CPL文件的注册和反注册工具) Regsvr 32命令是Windows中控件文件(如扩展名为DLL、OCX、CPL的文件)的注册和反注册工具。 命令格式: Regsvr32 [/s] [/n] [/i[:cmdline]] dllname /u 卸载安装的控件,卸载服务器注册; /s 注册成功后不显示操作成功信息框; /i 调用DllInstall函数并把可选参数[cmdline]传给它,当使用/u时用来卸载DLL;/n 不调用DllRegisterServer,该参数必须和/i一起使用。 实例当你运行一个软件,WINDOWS出现出错窗口,提示为*.DLL文件或者*.OCX 文件找不到,可是搜索一下,这个文件就在C:\WINDOWS\SYSTEM目录中.为什么呢?这是因为这个文件没有在WINDOWS中注册.也就是说WINDOWS还不认识它.假设你要注册的是abc.dll.选择"开始--运行"然后输入“regsvr32 abc.dll”,如果弹出提示信息“DllRegisterServerin Wupdinfo.dll succeeded”,说明组件注册成功;失败一般会出现“LoadLibrary("svchost.dll")失败-找不到指定的模块”,如果要卸载此组件,在“开始→运行”中键入“Regsvr32 /u Wupdinfo.dll ”即可。 实例1:IE无法打开新窗口regsvr32 actxprxy.dll regsvr32 shdocvw.dll 重启后如果还不能解决regsvr32 mshtml.dll regsvr32 urlmon.dll regsvr32 msjava.dll regsvr32 browseui.dll regsvr32 oleaut32.dll regsvr32 shell32.dll 实例2:IE无法保存HTML格式文件regsvr32 inetcomm.dll 实例3:MSN无法登陆regsvr32 softpub.dll 实例4:windows默认的文件关联混乱regsvr32 /i shdocvw.dll regsvr32 /i shell.dll regsvr32 /i shdoc401.dll 实例5:Window server 2003中无法播放MP3 regsvr32 i3codeca.acm regsvr32 i3codecx.ax 实例6:Windows添加/删除程序无法启动regsvr32 mshtml.dll regsvr32 /i shdocvw.dll regsvr32 /i shell.dll 实例7:Windows搜索功能故障regsvr32 urlmon.dll 实例8:禁止系统对媒体文件进行预览regsvr32 /u shmedia.dll

dll文件怎么打开和eXeScope的使用方法及其修改

eXeScope的使用方法及其修改 一、eXeScope的几种使用方法 修改系统DLL文件实现禁用 首先引导下系统主要的些dll 基本上只要修改它们就可以实现很高的安全性首先请没改过DLL的朋友请下载个 EXESCOPE6.3 - 6.4工具 1.Browselc.dll IE所需要调用的库文件DLL 结构雏形就是它了 2.Shdoclc.dll 系统窗口及设置对话框等等........ 比如删除文件重命名. 3.Shell32.dll 和上面是同类的 4.Explorer.exe 开始菜单调用的程序 ......系统就上加载他进系统 5.Cryptui.dll IE控件下载提示对话筐程序 现在我们就讲下任何修改这些程序来达到禁止的目的 一 1. 禁止下载打开 Shdoclc.dll 修改资源--对话框---4416 2. 禁止网页添加到收藏夹 Shdoclc.dll 修改资源--对话框---21400 EXESCOPE工具右边有个“禁用”的选项用这个功能把要点确定的地方禁止掉 就可以不用把确定键给删除如果以后要恢复也方便 二 1. 禁止恶意网页加载控件 Cryptui.dll 修改要同时修改5个地方才能完全禁止 资源--对话框---130 资源--对话框---230 资源--对话框---4101 资源--对话框---4104 资源--对话框---4107 三

1.禁止系统删除 Shell3 2.dll 修改5个地方 资源--对话框---1011 资源--对话框---1012 资源--对话框---1013 资源--对话框---1021 资源--对话框---1022 2. 禁止文件被改名修改 2个地方 资源--对话框---1018 资源--对话框---1019 3. 禁止运行菜单 资源--对话框---1018 4. 禁止系统文件被挪动修改3个地方 资源--对话框---1014 资源--对话框---1015 资源--对话框---1016 资源--对话框---1017 四禁止目标另存为 修改 Shdoclc.dll 文件 以下3个地方 1 资源--菜单--258---257 (删除) 2 资源--菜单--258---252 (删除) 3 资源--菜单--24641--2268 (删除这里有多项相同的删除就可以了) 五禁止自定义文件夹选项 修改 Shell32.dll 文件 以下4个地方 1 资源--菜单--215---28719 (删除) 2 资源--菜单--216---28719 (删除) 4 资源--菜单--217---28719 (删除) 5 资源--菜单--216---28719 (删除) 六禁止IE文件夹选项 修改 Browselc.dll 文件 1 资源--菜单--263 (这里有多个请删除)---41251(删除) 2 资源--菜单--266( 也有多个请删除)---41329 (删除) 3 资源--菜单--268---41251 (删除) 七. 禁止98 文件共享控件

dll文件编写

.dll文件编写 悬赏分:0 |解决时间:2006-5-20 14:56 |提问者:lzpyake 最佳答案 DLL是一种特殊的可执行文件。说它特殊主要是因为一般它都不能直接运行,需要宿主程序比如*.EXE程序或其他DLL的动态调用才能够使用。简单的说,在通常情况下DLL是经过编译的函数和过程的集合。 使用DLL技术主要有以下几个原因: 一、减小可执行文件大小。 DLL技术的产生有很大一部分原因是为了减小可执行文件的大小。当操作系统进入Windows时代后,其大小已经达到几十兆乃至几百兆。试想如果还是使用DOS 时代的单执行文件体系的话一个可执行文件的大小可能将达到数十兆,这是大家都不能接受的。解决的方法就是采用动态链接技术将一个大的可执行文件分割成许多小的可执行程序。 二、实现资源共享。 这里指的资源共享包括很多方面,最多的是内存共享、代码共享等等。早期的程序员经常碰到这样的事情,在不同的编程任务中编写同样的代码。这种方法显然浪费了很多时间,为了解决这个问题人们编写了各种各样的库。但由于编程语言和环境的不同这些库一般都不能通用,而且用户在运行程序时还需要这些库才行,极不方便。DLL的出现就像制定了一个标准一样,使这些库有了统一的规范。这样一来,用不同编程语言的程序员可以方便的使用用别的编程语言编写的DLL。另外,DLL还有一个突出的特点就是在内存中只装载一次,这一点可以节省有限的内存,而且可以同时为多个进程服务。 三、便于维护和升级。 细心的朋友可能发现有一些DLL文件是有版本说明的。(查看DLL文件的属性可以看到,但不是每一个DLL文件都有)这是为了便于维护和升级。举个例子吧,早期的Win95中有一个BUG那就是在闰年不能正确显示2月29日这一天。后来,Microsoft发布了一个补丁程序纠正了这个BUG。值得一提的是,我们并没有重装Win95,而是用新版本的DLL代替了旧版本的DLL。(具体是哪一个DLL文件笔者一时想不起来了。)另一个常见的例子是驱动程序的升级。例如,著名的DirectX就多次升级,现在已经发展到了6.0版了。更妙的是,当我们试图安装较低版本的DLL时,系统会给我们提示,避免人为的操作错误。例如我们升级某硬件的驱动程序时,经常碰到Windows提示我们当前安装的驱动程序比原来的驱动程序旧。 四、比较安全。

重新注册所有dll文件的方法

重新注册所有dll文件的方法如下: 运行~~CMD for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1 原文转抄如下: 很多时候我们会发现自己的系统问题越来越多,如果将就使用,那系统运行效率肯定不会很高,甚至还无法正常运行,如果选择重新安装系统,那不但麻烦不说,而且还会耗费很长的等待时间。其实,当Windows系统一旦遇到无法启动或者运行出错的故障时,我们不妨使用下面的六项措施,来快速而有效地“急救”受损的Windows系统,说不定能收获奇效! 1、最后一次配置 Windows2000以上版本的操作系统,每次成功启动之后都会对系统表进行自动备份,一旦我们发现Windows系统本次不能正常启动时,那多半是我们上一次对系统进行了错误的操作或者对某些软件进行了错误的安装,从而破坏了系统注册表的相关设置。此时,我们可以尝试使用上一次成功启动时的配置来重新启动一下计算机系统:只要在重新启动系统的过程中,及时按下F8功能键,调出系统启动菜单,然后选中“最后一次正确的配置”项目,这样的话Windows系统说不定又能启动正常了。 2、修复系统文件如果Windows系统的某些核心文件不小心被损坏的话,那么即使使用“最后一次配置”,Windows系统也很难保证就能启动正常。如果Windows系统只是有少量的系统文件受损的话,那我们不妨借助Windows系统内置的SFC扫描修复命令,来尝试对那些已经遭受破坏的系统文件进行修复,一旦修复成功后,那Windows系统的启动又会恢复正常状态了。在修复受损系统文件时,只要依次单击“开始”/“运行”命令,在弹出的系统运行对话框中,输入字符串命令“sfc/scannow”,单击回车键后,该命令程序就会对系统每个角落处的系统文件进行搜索扫描,一旦发现系统文件的版本不正确或者系统文件已经损坏的话,它就能自动弹出提示界面,要求我们插入Windows系统的安装光盘,以便从中提取正常的系统文件来替代不正常的系统文件,从而达到修复系统文件的目的。要是系统修复操作成功的话,相信我们重新启动计算机系统时,就不会看到有什么不正常的现象了。 3、注销当前用户如果Windows系统的受损部位只是由于安装了不恰当的软件,或者是对软件进行了不合适的设置引起的话,那么我们通常可以通过“注销当前用户”的方法,来对受损的Windows系统进行急救,因为软件对系统设置的影响往往只能限于当前登录的用户,一旦在当前用户状态下系统不能正常运行的话,我们完全可以注销当前用户,并以其他的用户重新登录系统,这样Windows一般又能恢复正常运行状态了。在注销当前用户、换用其他用户登录系统之前,我们需要先打开系统的控制面板窗口,然后双击其中的“用户帐户”项目,再单击其后界面中的“添加”按钮,来重新创建一个新的登录帐号,同时为该帐号设置一个合适的访问,并将对应的帐号设置为超级权限。由于换用其他帐号登录Windows系统后,保存在当前用户目录下的一些重要数据可能就访问不到了,为此在注销用户之前,我们有必要打开系统的资源管理器窗口,找到当前帐号所对应的用户目录,例如要是当前登录系统的帐号为aaaa的话,那么系统默认的帐号目录应该为“C:\Windows\DocumentsandSettings\aaaa”,将该目录下面的一些重要数据全部备份到系统分区以外的其他分区目录中。做好了上面的准备工作后,现在我们就能依次执行“开始”/“注销aaaa”命令,来将当前的登录帐号注销掉,然后重新用刚刚创建好的帐号登录Windows系统;在用新帐号成功登录进Windows系统后,我们再把前面备份好的重要数据恢复到当前帐号所对应的新用户目录下面,这样的话受损Windows系统就能恢复以前的正常运行状态了。 4、重注册DLL文件 Windows系统有时之所以会频繁受到损伤,主要是许多应用程序常常共享调用一些DLL文件,一旦有的应用程序在使用完毕被自动卸载掉后,这些应用程序所调用的DLL文件往往也会跟着被删除掉了,这么一来Windows 系统或系统中的其他应用程序再次调用那些共享了的DLL文件时,就自然会发生错误现象了。在急救那些由于系统DLL文件丢失引起的Windows系统运行不正常故障时,我们根本

怎样破解DLL文件

我用了vc 里的Dependcy Walker打开Dll,只能看到Dll文件里的函数名,看不到 各函数的参数具体设置情况。 请教各位前辈,破解Dll文件的具体思路是怎样的,我现在是一头雾水,摸不到头 绪,不知道怎样下手做。 你用Delphi|Project|Import Type Library试着导入并解析你的DLL,如果可以导入,则你可以看到函数的接口信息,否则,你只能用调试器跟踪每一个函数的执行,并查看CPU寄存器才能知道每个函数的参数和调用规则。 需要的功力可非一般, 那也要有调用此dll的执行文件才行,找wdasm去跟踪不错的 微软很多未公开的Dll函数和调用也是不断地被发现,以一人之力解析一个Dll文件的话,相信不易做到,除非这个文件很小,你可以用W32DASM等反编译软件来反汇编看看。 CSDN - 技术频道- 文档中心- Visual C++ 标题怎样获取未知DLL的接口参数jyu1221(原作) 关键字APIHOOK,DLL,接口,接口,函数,参数 首先需要知道该函数有几个参数,然后再细化参数类型。详细分析过程如下: 可以通过反汇编来知道接口函数的参数,建议使用W32DSM来分析,也可以直接使用VC来分析,就是麻烦一点。 现在使用W32DSM来具体说明: 1。先打开需要分析的DLL,然后通过菜单功能-》出口来找到需要分析的函数,双击就可以了。它可以直接定位到该函数。 2。看准该函数的入口,一般函数是以以下代码作为入口点的。 push ebp mov ebp, esp ... 3。然后往下找到该函数的出口,一般函数出口有以下语句。 ... ret xxxx; 以前破解过一些软件和数据库,这次是第一次正式的认真的破解一个商业版软件,抱着必胜DI信心出发..........发现过程居然很简单......或许熟悉软件的话还能简单@_@ 首先对文件进行探壳,用PEiD软件,发现是用UPX - / - DLL -> Markus & Lazlo加壳的。然后尝试用脱壳软件,试了好几个,结果用UPX-iT成功脱壳.(这个壳是UPX的变形,很难脱,要碰运气,几次失败,一次成功~:P).

DLL文件加壳

标题:对PECompact加壳的DLL脱壳的一点分析 (7千字) 发信人:ljttt 时间:2000-8-17 8:49:23 详细信息: 对PECompact加壳的DLL脱壳的一点分析 【声明】 我写文章以交流为主,希望大家在转载时能保持文章的完整性。 【前言】 目前,我对DLL的脱壳的了解也不多,相信有些地方会和对EXE的脱壳大致相同。现在我知道的主要不同是必须要在DLL的空间开始跟踪。否则从EXE开始跟踪,那还不把人累死。另外 ProcDump 和 PEditor 之类的工具好象还无法自动修复DLL的import table。唉,又是手动,什么时候有个DLL的脱壳机出现呢?ou,别看我!我编程的水平三流,写不出那些好东东。 样例文件: dlcsp32.dll (DynaDoc Reader v3.01所带动态链接库文件,这个程序就是看.wdl电子图书文件的那个) 加壳方式: PECompact v1.41b1加壳 检测工具:和尚头上的虱子-----明摆着的嘛 调试工具: SoftICE v4.05,PEditor v1.5,Hex WorkShop 2.10 目标:脱壳 作者: ljttt 写作日期: 2000-08-16 1、首先当然要分析基本信息了。用PEditor打开动态链接库文件,得到如下信息 Entry Point: 00024000 Image Base: 10000000 Size of Image: 00029000 Section Virtual Size Virtual Offset pec1 00020000 00001000 pec2 00003000 00021000 .pec 00004000 00024000 .rsrc 00001000 00028000 再来看看import table和export table的情况,export table没有改变。问我怎么知道?有未加壳的DLL 嘛。西西。 2、现在我们要想办法在动态链接库的入口点 10024000 处中断,当然方法很多了,这里介绍两种办法。 ①、第一种方法 一、首先,用PEditor打开DLL文件,然后单击 FLC 按钮(这个功能是帮你计算Virtual Address转换为Offset的) 输入 10024000 ,单击 DO! 按钮,得到 Offset[hex] 为 B000。

修复dll文件

最佳答案 一. 关闭浏览器,打开新版本360安全卫士的“系统修复”,可根据情况,将“主页修复”“系统修复”“IE修复”选择打钩(也可全选。至少要选“系统修复”),再点“一键修复”。(懒得安装它,就直接用360急救箱)。 再用360急救箱。【按步骤操作:先“开始急救”;扫描完后,出现木马,就点“隔离”;再点“修复” (可以全选)――“立即修复”。接着,点“恢复丢失的DLL文件”,添加系统检测时所得知丢失的DLL文件,再点“立即修复’。“修复网络”视情况而决定是否修复。完后,应重启。】 二.用360安全卫士的“清理插件”进行扫描,扫除恶意插件后,进行清理。完后应重启。 楼主不妨试下 iertutil.dll 是存放在C:\Windows\System32 目录下的一个动态链接库文件,它提供函数给其他程序所调用。iertutil.dll 能够实现接到互联网,纪录输入,监控应用程序等功能。 提示没有找到iertutil.dll或者iertutil.dll丢失,可能是你的电脑中毒,卸载软件误删,尤其是非正版Windows系统升级或者卸载IE容易出现这个问题。 点击下载iertutil.dll 症状1: 卸载IE,或者不知道卸载了某个文件,重启以后只能看见桌面背景,桌面上的其他东西都不见了。 症状2: 打开电脑IE和Explore都无法启动,并且试图运行explore.exe,总是弹窗“没有找到iertutil.dll,因此这个应用程序未能启动,重新安装可能会修复此问题。” 解决方法: 方法一: 一、关闭浏览器,打开新版本360安全卫士(点击下载)的“系统修复”,可根据情况,将“主页修复”“系统修复”“IE修复”选择打钩(也可全选。至少要选“系统修复”),再点“一键修复”。(懒得安装它,就直接用360急救箱)。 再用360急救箱(点击下载)。【按步骤操作:先“开始急救”;扫描完后,

windows启动时候提示“加载XX.dll文件找不到指定的模块的解决办法

windows启动时候提示“加载XX.dll文件找不到指定的模块"的解决办法 windows启动时候提示“加载XX.dll文件找不到指定的模块,出现这个提示的主要原因就是你卸解什么软件不彻底,没有卸解干净,或者是软件本身就有错误。你可以这样解决:你如果知道是什么软件的话,你可以再重新装装一下这个软件,如果你不知道的话,方法1:你可以在运行里面输入msconfig打开系统实用配置程序,在启动里面找到那个dll文件把前面的勾去掉即可。方法2:在运行里面输入regedit打开注册表编辑器,在HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 中找一下你开机时的那个提示的键值,然后右键删除。 开始--运行--msconfig--启动--找到和你说的类似的选项NvCpl--取消勾--确定,然后 1,开始-运行-输入:regedit,然后回车 2,选择“我的电脑”,然后点击“文件”-“导出”-随便起个名字点“保存”。这样做的目的是备份一下注册表,以免误操作后及时恢复。恢复的方法是,找到你刚才保存的文件,双击它,然后选择“允许导入”即可。 3,选择“我的电脑”,按F3键,然后输入“NvCpl”,点击“查找下一个”,找到后一定要核对是不是NvCpl.dll文件,如果确认,对该项点“右键”选“删除”。注意:结果出来后要看后面的数值部分,不能光看文件名称,只要有NvCpl.dll在的文件不管它边上还写没写别的(如:NvCpl.dll,load),都要删除!” 4,然后再按F3键-删除,直到提示“完成注册表搜索”为止。 5,重新启动计算机,看看系统有没有问题。 注,如果出现了其它严重问题,请恢复注册表。 (【sql1981】原创答案,引用请说明原作者:sql1981,未通知原作者严禁复制本答案!!) 【注意】注册表如果也没找到的话请用下面的方法! 下载AUTORUNS(启动项目查看器) 下载安装后运行“autoruns.exe”在所有登陆项“全部”里查找“NvCpl.dll”和所有“找不到...DLL文件(特别注意)”项目,右键点删除。

dll文件详解

DLL 文件详解 Part1 dll文件与exe文件的区别: 动态链接库(Dynamic Link Library,缩写为DLL) 是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件的扩展名一般是dll,也有可能是drv、sys和fon,它和可执行文件(exe)非常类似. 具体说: DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。动态链接是相对于静态链接而言的。所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。 而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。 共有三种动态链接库的形式:Win32DLL,MFC常规DLL和MFC拓展DLL 1、Win32DLL使用的是Win32的API实现的,只能导出函数,能被各种应用程序调用,适用范围最广。WIN32 DLL 是纯C++ API 写的,体积也比较小。 一般做MFC程序时,选用MFC DLL,MFC常规DLL没有显性DLLMAIN。MFC DLL 使用了MFC 体积比较大,MFC DLL本身也分为两种,一种是常规DLL,一种是扩展DLL。 2.MFC常规DLL是适用MFC创建的,就像MFC程序跟Win32程序的关系一样,MFC常规DLL 和Win32DLL的关系也是如此。它使用MFC的机制,只能导出标准C函数。如此,它便可以被大部分Win32程序调用。 3.MFC拓展DLL也也使用的是MFC机制创建的,相比于MFC常规DLL,拓展DLL可以导出C++类和MFC派生类,如此扩大了DLL的接口范围。此长彼消,MFC拓展DLL的适用范围较小,只能被MFC程序调用。因为它导出的不只是函数,还有C++类和MFC派生类。 三者区别展开来说: MFC DLL 和win32 DLL的差别就是一个使用MFC类库,一个不使用,如果你代码中用到的MFC,那么一定要创建MFC DLL,因为win32 DLL用不了MFC类。 MFC常规DLL在DLL内部可以用MFC类的,但是给外部的接口并不提供MFC类的支持,还是

DLL文件能否删除

DLL文件是什么?能否删除? DLL文件即:动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。它们向运行于Windows操作系统下的程序提供代码、数据或函数。程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL 文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:\Windows\System目录下。系统运行一段时间之后就会产生一些多余的DLL文件,你可以用“优化大师”里面的“冗余DLL清理”功能来进行清理。 当我们在使用电脑时,会根据自己的需求安装大量的软件,而有些软件在不需要再次用到时,就会将其卸载删除以节约磁盘空间。但是,卸载这些软件时,一般都只是卸载安装文件的文件夹,而安装在系统中的dll动态链接库文件是不会被删除的,时间一长将会累积大量无用的dll文件,不但占用磁盘还会影响到系统运行速度,下面我们就来教教大家如何删除多余的dll文件。 1.首先在桌面上依次击“开始”-“运行”。如下图所示:

2.打开运行窗口后,输入“regedit”运行命令,点击“确认”进入下一步。如下图所示: 3.在注册编辑器中,依次展开以下路径: HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ SharedDlls 然后选择数据为“0”的这一项,记录下这一项的路径后,直接右键删除此项。如下图所示:

dll文件的修改手册

dll文件的修改怎么调用dll文件用什么工具打开 DLL后缀的文件是Dynamic Link Library的缩写,也就是意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:WindowsSystem目录下 二、修改DLL文件的具体应用 在系统的组策略和注册表中,我们可以修改一些键值来优化我们的系统,并加强操作系统的安全性。可是,对于限制下载、禁止删除文件等功能,我们无法通过上述的操作来完成,这只有通过修改系统DLL文件来实现。目前,我们通过修改系统的DLL文件,可以实现禁止删除文件、禁止IE下载、禁止IE另存为、禁止文件打开方式等功能。 三、系统中部分DLL文件的功能 1、Browselc.dll IE所需要调用的库文件DLL结构雏形就是它了 2、Shdoclc.dll 系统窗口及设置等,如删除文件、重命名 3、Shell32.dll 系统窗口及设置等,如删除文件、重命名 4、Cryptui.dll IE控件下载及提示对话框程序 四、修改DLL文件的方法

1、下载DLL文件修改工具EXESCOPE6.0-6.3或6.4工具,我使用的是Passolo V6.0.04这个我用的顺手,给大家个下载地址 https://www.360docs.net/doc/5016954846.html,/soft/15710.html 2、获取Browselc.dll、Shdoclc.dll、Shell32.dll和Cryptui.dll这几个链接文件。在找这几个文件时,最好将其他机器的硬盘,挂接在本机中,然后用本机的操作系统启动并复制这几个文件。 3、在修改DLL文件的时候,打开该键值,在右面的对话框中将所要修改的键值禁用即可,不要删除,以备日后恢复 五、DLL文件修改秘籍 1、禁止下载的修改方法:打开Shdoclc.dll修改资源--对话框---4416,将4416键值禁用即可。 2、禁止网页添加到收藏夹,打开Shdoclc.dll修改资源--对话框---21400,将该键值禁用即可。 3、禁止恶意网页加载控件,修改Cryptui.dll文件,要同时修改5个地方才能完全禁止资源--对话框---130 资源--对话框---230 资源--对话框 ---4101 资源--对话框---4104 资源--对话框---4107 将以各对话框中的相应键值,修改成为禁用就可以了。 4、禁止系统删除文件修改Shell32.dll,这个文件需要修改5个地方才可以禁止系统删除文件。资源--对话框---1011 资源--对话框---1012 资源--对话框---1013 资源--对话框---1021 资源--对话框---1022 将以上五个地址的键值禁用就可以了!

LabVIEW如何方便地调用DLL文件

LabVIEW如何方便地调用DLL文件 LabVIEW调用DLL文件 LabVIEW支持通过调用DLL文件的方式与其它编程语言混合使用。比如,在实际的工程项目中,用户可以用C++语言实现软件的运算部分,并把这些功能构建在DLL文件中,然后再使用LabVIEW编写程序的界面部分,并通过调用编写好的DLL来调用运算部分的功能。 LabVIEW 中是通过Call Library Function Node(CLN)节点来完成DLL文件调用的。创建一个新的VI,右击程序框图,在Functions Palette中依次选中Connectivity——Libraries & Executables工具栏即可找到该节点(如下图)。 将节点放置在程序框图中,双击会出现它的配置对话框,共有四页。第一页用于填写被调用函数的信息Library name or path(库名/路径)需给出DLL文件名和路径,若引用操作系统路径下的DLL文件,直接输入文件名也可调用,其它的必须输入全路径。在这里已经给出名字的DLL是被静态加载到程序中的,也就是说当调用了这个DLL的VI被装入内存时,DLL同时被装入内存。LabVIEW也可动态加载DLL,只要勾选上Specify path on diagram(在程序框图中指定路径)的选项即可。选择了这个选项,在Library name or path(库名/路径)中输入的内容就无效了,取而代之的是CLN 节点多出一对输入输出,用于指明所需要使用的DLL的路径。这样,当VI被打开时,DLL不会被装入内存,只用程序运行到需要使用这个DLL中的函数时,才把其装入内存。Function name是需要调用的函数的名称,LabVIEW会把DLL中所有的暴露出来的函数都列出,用户只要在下拉框中选取即可。Thread栏用于设定哪个线程里运行被调用的函数。用户可以通过CLN 节点的配置面板来指定被调用函数运行所在的线程。CLN 的线程选项非常简单,只有两项:Run in UI thread和Run in any thread。LabVIEW的程序框图上直接可以看出一个CLN节点是选用的什么线程。如果Run in UI thread,节点颜色是橙色的;Run in any thread则是浅黄色的

相关文档
最新文档