返回

32位DCOM应用程序“无法使用对象链接和嵌入”错误的终极修复指南

windows

在32位DCOM应用程序中修复“无法使用对象链接和嵌入”错误的终极指南

前言

在使用PowerShell脚本来为32位DCOM应用程序(例如Excel)配置用户标识时,你可能遇到“无法使用对象链接和嵌入”的令人沮丧的错误。即使已使用了微软Windows SDK的示例,该错误仍然存在。这篇文章将深入探讨导致此错误的原因并提供一个全面的解决方案。

错误原因

该错误通常源自注册表权限问题。当手动配置组件服务控制台时,Windows会自动授予当前用户对相关注册表项的访问权限。但是,通过脚本自动执行此过程时,此权限授予不会自动发生。

解决方案

为了解决此问题,我们需要在脚本中手动授予注册表权限。以下步骤将指导你完成这个过程:

  1. 修改PowerShell脚本:

    修改你的PowerShell脚本以包含以下代码,授予对相关注册表项的访问权限:

    # 授予对相关注册表项的访问权限
    $RegistryKey = [Microsoft.Win32.RegistryKey]::OpenBaseKey(
        [Microsoft.Win32.RegistryHive]::LocalMachine,
        [Microsoft.Win32.RegistryView]::Registry64
    )
    
    $RegistryKey.OpenSubKey("SOFTWARE\\Classes\\Interface\\{00020400-0000-0000-C000-000000000046}")?.SetAccessControl(
        (New-Object System.Security.AccessControl.RegistrySecurity).SetAccessRule(
            [System.Security.AccessControl.RegistryAccessRule]::new(
                "NT AUTHORITY\\SYSTEM",
                "FullControl",
                [System.Security.AccessControl.InheritanceFlags]::None,
                [System.Security.AccessControl.PropagationFlags]::None,
                [System.Security.AccessControl.AccessControlType]::Allow
            )
        )
    )
    
    $RegistryKey.OpenSubKey("SOFTWARE\\Classes\\Interface\\{00000101-0000-0000-C000-000000000046}")?.SetAccessControl(
        (New-Object System.Security.AccessControl.RegistrySecurity).SetAccessRule(
            [System.Security.AccessControl.RegistryAccessRule]::new(
                "NT AUTHORITY\\SYSTEM",
                "FullControl",
                [System.Security.AccessControl.InheritanceFlags]::None,
                [System.Security.AccessControl.PropagationFlags]::None,
                [System.Security.AccessControl.AccessControlType]::Allow
            )
        )
    )
    
    $RegistryKey.Close()
    
  2. 运行修改后的脚本:

    使用管理员权限运行修改后的PowerShell脚本。脚本将创建应用程序ID并配置用户标识。它还将授予对注册表项的完全控制权限,从而消除错误。

结论

通过在脚本中添加注册表权限,你可以有效地解决“无法使用对象链接和嵌入”错误,从而使32位DCOM应用程序正常运行。

常见问题解答

  1. 为什么需要管理员权限来运行脚本?
    授予注册表权限需要管理员权限。

  2. 修改后的脚本适用于哪些32位DCOM应用程序?
    该脚本适用于任何32位DCOM应用程序,例如Microsoft Office应用程序。

  3. 脚本中其他需要注意的事项是什么?
    确保已正确设置RegPath,AppID,DomainUser和Password参数。

  4. 如果修改后的脚本仍然不能解决错误怎么办?
    检查注册表权限是否正确设置,并确保没有其他进程干扰应用程序的运行。

  5. 在使用脚本时我需要了解的其他安全注意事项是什么?
    谨慎使用注册表权限,仅授予必要的访问权限,并定期检查权限设置。