Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Windows 7 64位上注册DLL文件?_Dll_Windows 7_64 Bit_Regsvr32_Dllregistration - Fatal编程技术网

如何在Windows 7 64位上注册DLL文件?

如何在Windows 7 64位上注册DLL文件?,dll,windows-7,64-bit,regsvr32,dllregistration,Dll,Windows 7,64 Bit,Regsvr32,Dllregistration,我已尝试使用以下代码: cd c:\windows\system32 regsvr32.exe dllname.ax 但这对我不起作用。如何在Windows7上使用64位处理器注册DLL文件?好吧,您没有指定它是32位还是64位DLL,也没有包含错误消息,但我猜这与本文中描述的问题相同: 引用那篇文章: 发生此行为是因为System32中的Regsvr32.exe文件 文件夹是64位版本。运行Regsvr32注册DLL时, 默认情况下,您使用的是64位版本 该条的解决办法: 要解决此问题,请从

我已尝试使用以下代码:

cd c:\windows\system32
regsvr32.exe dllname.ax

但这对我不起作用。如何在Windows7上使用64位处理器注册DLL文件?

好吧,您没有指定它是32位还是64位DLL,也没有包含错误消息,但我猜这与本文中描述的问题相同:

引用那篇文章:

发生此行为是因为System32中的Regsvr32.exe文件 文件夹是64位版本。运行Regsvr32注册DLL时, 默认情况下,您使用的是64位版本

该条的解决办法:

要解决此问题,请从%SystemRoot%\Syswow64运行Regsvr32.exe 文件夹。例如,键入以下命令以注册DLL:
cd\windows\syswow64
regsvr32 c:\filename.dll


在命令提示符中键入
regsvr32 name.dll
(在提升模式下执行!),然后按“回车”。请注意,
name.dll
应替换为要注册的dll的名称。例如,如果要注册iexplore.dll,请键入
regsvr32 iexplore.dll

了解错误消息将非常有价值。这是为了提供信息,即使它对你没有任何意义,但它对我们有意义。被迫猜测,我认为DLL是一个32位DirectX过滤器。在这种情况下,这应该是正确的行动方针:

cd c:\windows\syswow64
move ..\system32\dllname.ax .
regsvr32.exe dllname.ax
这必须在提升的命令提示符下运行,以便UAC无法停止所需的注册表访问。如果DLL是32位的,请在superuser.com上询问有关此问题的更多问题:

  • 将DLL复制到C:\Windows\SysWoW64\
  • 在提升的cmd中:%windir%\SysWoW64\regsvr32.exe%windir%\SysWoW64\namedll.dll
  • 如果DLL为64位:

  • 将DLL复制到C:\Windows\System32\
  • 在提升的cmd中:%windir%\System32\regsvr32.exe%windir%\System32\namedll.dll

  • 最后,我发现解决方案只是以管理员身份运行CMD,然后编写

    cd \windows\syswow64
    
    然后写下这个

    regsvr32 c:\filename.dll
    

    我希望这个答案对x64系统有帮助,system32代表64位,syswow64代表32位(而不是另一个答案中所述的其他方式)。WOW(Windows上的Windows)是在64位子系统下运行的32位子系统

    这是一个混乱的命名术语,只会混淆,但这就是它的方式

    再次

    syswow64是32位,而不是64位

    system32是64位,而不是32位

    每个目录中都有一个regsrv32。一个是64位,另一个是32位。
    odbcad32和其他的处理方法也是一样。(如果您想看到32位驱动程序,它不会与system32中的默认odbcad32(64位)一起显示。)

    打开“开始”菜单,在搜索框中键入cmd,按住Ctrl+Shift并按Enter键

    这将在管理员模式下运行命令提示符

    现在键入:
    regsvr32 MyComobject.dll

    如果dll为32位:

    将DLL复制到C:\Windows\SysWoW64\
    在提升的命令提示符中:
    %windir%\SysWoW64\regsvr32.exe%windir%\SysWoW64\namedll.dll

    如果DLL为64位:

    将DLL复制到C:\Windows\System32\
    在提升的命令提示符中:
    %windir%\System32\regsvr32.exe%windir%\System32\namedll.dll

    我知道这似乎是错误的,但这就是它的工作方式。见:


    Quote:“注意:在64位版本的Windows操作系统上,有两个版本的Regsv32.exe文件:
    64位版本为%systemroot%\System32\regsvr32.exe。
    32位版本为%systemroot%\SysWoW64\regsvr32.exe。
    "

    我刚刚测试了这个极其简单的方法,它工作得非常完美——但我使用内置的管理员帐户,因此我不必为了提升权限而跳转

    以下批处理文件使用户无需将文件移入/移出系统文件夹。它还让Windows应用正确版本的
    Regsvr32

    说明:

    • 在包含要注册的库(
      -.dll
      -.ax
      )文件的文件夹中,打开一个新的文本文件并粘贴到以下例程之一:

      echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 64-BIT SYSTEMS
      copy %1 C:\Windows\System32
      regsvr32 "%nx1"
      echo END BATCH FILE
      pause
      

    • 将新文本文件保存为批处理(
      -.bat
      )文件;然后简单地将
      -.dll
      -.ax
      文件拖放到批处理文件的顶部

    • 如果UAC没有给您以管理员身份运行批处理文件的机会,您可能需要手动提升权限(说明适用于Windows 7):

    • 右键单击批处理文件
    • 选择
      创建快捷方式
    • 右键单击快捷方式
    • 选择属性
    • 单击
      兼容性
      选项卡
    • 选中标有
      以管理员身份运行此程序的框
    • -.dll
      -.ax
      文件拖放到新快捷方式的顶部,而不是批处理文件
    就这样了。我选择了
    COPY
    而不是
    MOVE
    ,以防止任何与UAC相关的后续尝试失败。成功注册后,应删除原始库(
    -.dll
    -.ax
    )文件

    不必担心通过以前的过程复制到系统文件夹(
    C:\Windows\System32
    C:\Windows\SysWOW64
    )的副本--它们将在每次运行批处理文件时被覆盖

    除非您运行了错误的批处理文件,否则在这种情况下,您可能需要在运行正确的批处理文件之前删除复制到错误的系统文件夹(
    C:\Windows\System32
    C:\Windows\SysWOW64
    )的副本,…或

    • 帮助Windows通过完全限定其目录位置来选择要注册的正确库文件

    • F
      echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 32-BIT SYSTEMS
      copy %1 C:\Windows\SysWOW64
      regsvr32 "%nx1"
      echo END BATCH FILE
      pause
      
      regsvr32.exe C:\folder\folder\name.dll