如何注册dll文件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何注册dll文件?相关的知识,希望对你有一定的参考价值。
开始 - 运行(输入CMD)- 打开管理员命令窗口,在命令窗口输入:for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1, 回车,到屏幕滚动停止为止。 参考技术A1、首先需要在一定途径获取algorithm.dll文件,例如搜索引擎查询并下载algorithm.dll。
2、将algorithm.dll文件复制到DLL目录“C:\\Windows\\System32”下。
3、然后,进入开始菜单的运行功能中,输入:regsvr32 algorithm.dll,点击确定。
4、这时弹出安装完成algorithm.dll文件的提示,点击确定就完成了win7手动注册的步骤了。
参考技术B 在开始菜单中选择"运行" ,输入 "regsvr32 ***.dll" (不要输入引号,***是你要注册的dll文件名),只是如果dll文件不 在windows,windows\system32文件夹内你就应该指定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目录下。 1、如何了解某应用程序使用哪些DLL文件 右键单击该应用程序并选择快捷菜单中的“快速查看”命令,在随后出现的“快速查看”窗口的“引入表”一栏中你将看到其使用DLL文件的情况。 2、如何知道DLL文件被几个程序使用 运行Regedit,进入HKEY_LOCAL_MACHINE\Software\Microsrft\Windows\Current- Version\SharedDlls子键查看,其右边窗口中就显示了所有DLL文件及其相关数据,其中数据右边小括号内的数字就说明了被几个程序使用,(2)表示被两个程序使用,(0)则表示无程序使用,可以将其删除。 3、如何解决DLL文件丢失的情况 有时在卸载文件时会提醒你删除某个DLL文件可能会影响其他应用程序的运行。所以当你卸载软件时,就有可能误删共享的DLL文件。一旦出现了丢失DLL文件的情况,如果你能确定其名称,可以在Sysbckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。如果这样不行,在电脑启动时又总是出现“***dll文件丢失……”的提示框,你可以在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,单击选择“System.ini”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了。本回答被提问者采纳 参考技术C 楼上的 看的我头晕。。。不知道你说的是注册哪类DLL 干脆重新注册所有的DLL文件 反正没有坏处 而且还能解决内存不能为read的问题呢 呵呵
点开始 运行 输入 cmd 回车
会出来一个命令窗口 复制以下内容到窗口输入处
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
回车 (注意 粘贴的时候要用鼠标右键) 然后就看它一直刷了 等它刷完了 就是把所有的DLL文件都重新注册过了。。简单明了。。 参考技术D 楼上的 看的我头晕。。。
如何在 WiX 3 中注册 Win32 COM DLL 文件?
【中文标题】如何在 WiX 3 中注册 Win32 COM DLL 文件?【英文标题】:How do you register a Win32 COM DLL file in WiX 3? 【发布时间】:2010-09-26 17:22:42 【问题描述】:我找到了一个注册 DLL 的示例,Registering an Assembly for COM Interop in a MSI file with the Windows Installer XML toolset.,WiX 抱怨“AssemblyRegisterComInterop”属性。
我删除了它并将“Assembly”属性更改为win32,它说我需要指定AssemblyManifest 属性,但我应该在那里放什么?
【问题讨论】:
【参考方案1】:最简单的方法(Rob M 会大喊大叫错误)就是在 DLL 的 File 标记上使用 SelfRegCost=1
。
这是错误的,因为我们应该明确控制 DLL 的注册,而不是允许它通过 DllRegisterServer 运行任意代码。理论上,当调用 DllRegisterServer 时,DLL 除了将适当的条目放入注册表中之外,什么都不做。不幸的是,他们中的许多人做得更多,所以自我注册可能是让您的安装工作的唯一方法。
这也是错误的,因为这意味着 Windows 安装系统对这些注册表项一无所知,也不知道应该存在什么和不应该存在什么。这意味着修复将不起作用,并且可能无法正确清理卸载等。
否则,您可以通过将heat.exe
指向您的 DLL 并将其输出集成到您当前的 WiX 项目中来生成适当的 WiX 代码。您将获得各种 Class、ProgID、TypeLib 和 Registry 标签。您可能需要手动编辑该输出以使其编译。
希望对你有帮助。
【讨论】:
所以基本上复制/粘贴 heat.exe 的输出并更改适当的路径等? 我喜欢将热创建的 wxs 放入主要 wxs 引用的片段中。你传递给 heat 的选项是什么,没有注册 dll。 我通常必须将 class 和 progid 标签移动到文件标签中,并可能编辑一些注册表项。具体来说,如果 DLL 是 .NET DLL,则需要为引用 mscoree.dll 的注册表项提供唯一 ID,否则会与自动生成的注册表项发生冲突。 我通常这样运行 heat:heat file -gg -sfrag "C:\path\to\file.dll" -o myfile.wxs ... 然后将生成的 wxs 文件包含在一个还愿中项目,修改它,并通过 componentref 或 componentgroupref 从 msi/merge 模块的“主” wxs 引用根组件。 在我的构建过程中,我使用自定义脚本自动进行了手动编辑。我建议你也这样做...... ;)【参考方案2】:不只是我会抱怨 SelfReg 是多么邪恶。 MSI SDK 为您提供a list of seven reasons why not to use SelfReg。
例子:
<Component Id="Component" Guid="*">
<File Source="ComServer.dll">
<Class Id="PUT-CLSID-HERE" Context="InprocServer32" ThreadingModel="apartment" Description="Your server description">
<ProgId Id="Your.Server.1" Description="Your ProgId description">
<ProgId Id="Your.Server" Description="Your ProgId description" />
</ProgId>
</Class>
<Class Id="PUT-PROXY-CLSID-HERE" Context="InprocServer32" ThreadingModel="both" Description="Your server Proxies, assuming you have them">
<Interface Id="PUT-INTERFACEID-HERE" Name="IInterface1" />
<Interface Id="PUT-INTERFACEID-HERE" Name="IInterface2" />
<Interface Id="PUT-INTERFACEID-HERE" Name="IInterface3" />
<Interface Id="PUT-INTERFACEID-HERE" Name="IInterface4" />
</Class>
</File>
</Component>
最终,特洛伊的答案都是正确的。
【讨论】:
Self-registration Considered Harmful(请原谅 Dijkstra 的典故)。【参考方案3】:您可以尝试使用 heat.exe 程序,然后在您的 wix 代码中引用该片段。
heat.exe file <filename> -out <output wxs file>
如:
heat.exe file my.dll -out my.wxs
【讨论】:
添加片段使用方法以上是关于如何注册dll文件?的主要内容,如果未能解决你的问题,请参考以下文章