文章编号: 164787 - 最后修改: 2005年3月17日 - 修订: 4.2 INFO:Windows Rundll 和 Rundll32 接口
本页概要
Microsoft Windows 95、Windows 98 和 Windows Millennium Edition (Me) 包含两个名为 Rundll.exe 和 Rundll32.exe 的命令行实用程序,通过这两个程序可调用从 16 位或 32 位 DLL 导出的函数。但是,使用 Rundll 和 Rundll32 程序并不能调用从任何 DLL 导出的任何函数。例如,不能使用这两个实用程序调用从系统 DLL 中导出的 Win32 API(应用程序编程接口)调用。这两个程序只允许您调用从 DLL 导出的、明确编写为供这两个程序调用的函数。本文详细介绍了 Rundll 和 Rundll32 程序在上面列出的 Windows 操作系统中的用法。
MIcrosoft Windows NT 4.0、Windows 2000 和 Windows XP 在发行时只附带 Rundll32。这些平台都不提供对 Rundll(Win16 实用程序)的支持。 Rundll 和 Rundll32 实用程序最初设计为仅供 Microsoft 内部使用。但是它们提供的功能非常通用,因此现在可供在一般情况下使用。请注意,Windows NT 4.0 发行时只随附 Rundll32 实用程序,并且只支持 Rundll32。 更多信息Rundll 与 Rundll32 之比较Rundll 加载并运行 16 位 DLL,而 Rundll32 加载并运行 32 位 DLL。如果您向 Rundll 或 Rundll32 传递了错误的 DLL 类型,它可能无法运行,并且不显示任何错误信息。Rundll 命令行Rundll 的命令行如下所示:
Rundll 的工作方式Rundll 执行以下步骤:
如何编写 DLL在您的 DLL 中,使用以下原型编写 <entrypoint> 函数:16 位 DLL:
hwnd - 窗口句柄,它应该用作 DLL 创建的任何窗口的 所有者窗口 hinst - DLL 的实例句柄 lpszCmdLine - DLL 应分析的 ASCIIZ 命令行 nCmdShow - 描述 DLL 的窗口应如何显示 hwnd =(父窗口句柄) hinst = SETUPX.DLL 的 HINSTANCE lpszCmdLine = "132 C:\WINDOWS\INF\SHELL.INF" nCmdShow =(传递给 CreateProcess 的任何 nCmdShow) 有关 Windows 95 和 Windows NT 之间的区别的特别提示在 Windows NT、Windows 2000 和 Windows XP 中,Rundll32.exe 的行为稍有不同,目的是为了适应 UNICODE 命令行。Windows NT 首先尝试对 <EntryPoint>W 调用 GetProcAddress 以获取其地址。如果找到该入口点,则假定原型为: 如果没有找到 <EntryPoint>W 入口点,Windows NT 就会对 <entrypoint>A 和 <entrypoint> 调用 GetProcAddress 以获取其地址。如果发现其中任何一个地址,则将其视为 ANSI 入口点,并像在 Windows 95/98/Me 中那样进行处理。因此,如果希望 DLL 在带 ANSI 支持的 Windows 95 中以及带 UNICODE 支持的 Windows NT/2000/XP 中运行,您应该导出以下两个函数:EntryPointW 和 EntryPoint。在 Windows NT/2000/Me 中,通过 UNICODE 命令行调用 EntryPointW 函数;在 Windows 95/98/Me 中,则通过 ANSI 命令行调用 EntryPoint 函数。 参考这篇文章中的信息适用于:
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。 | 其他资源 其他帮助资源社区或论坛文章翻译
|





















回到顶端