代码之家  ›  专栏  ›  技术社区  ›  Christian Rodemeyer

运行regsvr32/s/c“myocx.ocx”需要哪些权限/权限

  •  10
  • Christian Rodemeyer  · 技术社区  · 17 年前

    regsvr32 /s /c ".\debug\myocx.ocx"
    

    我需要授予构建帐户哪些权限/权限/策略,在哪里操作?(浏览本地用户和组以及本地安全设置对我没有帮助)

    4 回复  |  直到 17 年前
        1
  •  11
  •   Christian Rodemeyer    17 年前

    通过regedit,您需要在“HKEY_CLASSES_ROOT”上授予构建帐户权限。

    右键单击HKEY_CLASSES_ROOT并选择“权限”。..完全控制。

        2
  •  1
  •   Paul-Jan    17 年前

    注册OCX归结为在HKLM下的注册表中写入条目。默认情况下,非管理员帐户没有权限,我不太确定你的构建帐户是否应该(在我看来,调试OCX的安装仍然是“安装”(v.s.构建))。

        3
  •  0
  •   lakshmanaraj    17 年前

    虽然有可能只是 grant full control of the HKCR key ,这可能会导致授予比必要更多的访问权限。在研究如何做到这一点时,有一次我在HKCR上使用了权限,导致需要重新映像我的机器。为了编写这个脚本,我使用了 procmon 工具,并过滤拒绝的注册表权限,然后在脚本中授予它们。

    $buildAcctUserName -设置规则时使用的帐户。

    $buildAcctUserName = "AzureDevOpsBuilder"
    
    # Create Rule for full control of keys that need to be added to/updated/deleted from
    $user = New-Object System.Security.Principal.NTAccount("$($env:COMPUTERNAME)\$buildAcctUserName")
    $rule = New-Object System.Security.AccessControl.RegistryAccessRule(
      $user, 
      [System.Security.AccessControl.RegistryRights]"FullControl", 
      [System.Security.AccessControl.InheritanceFlags]"ContainerInherit, ObjectInherit",  <# ContainerInherit / None / ObjectInherit #>
      [System.Security.AccessControl.PropagationFlags]::None, 
      [System.Security.AccessControl.AccessControlType]::Allow)
    
    # Grant access to HKCR
    $regHKCRHive=[Microsoft.Win32.RegistryHive]::ClassesRoot;
    $regHKCRBaseKey=[Microsoft.Win32.RegistryKey]::OpenBaseKey($regHKCRHive,[Microsoft.Win32.RegistryView]::Default)
    $regkey=$regHKCRBaseKey.OpenSubKey("", $true) 
    $acl = $regkey.GetAccessControl()
    $acl.SetAccessRule($rule)
    $regkey.SetAccessControl($acl)
    
    # Grant access to HKLM\Software
    $regHKLMHive=[Microsoft.Win32.RegistryHive]::LocalMachine
    $regHKLMBaseKey=[Microsoft.Win32.RegistryKey]::OpenBaseKey($regHKLMHive,[Microsoft.Win32.RegistryView]::Default)
    $regkey=$regHKLMBaseKey.OpenSubKey("SOFTWARE", $true) 
    $acl = $regkey.GetAccessControl()
    $acl.SetAccessRule($rule)
    $regkey.SetAccessControl($acl)
    
    # Grant access to HKLM\Software\Wow6432Node
    $regkey=$regHKLMBaseKey.OpenSubKey("SOFTWARE\Wow6432Node", $true) 
    $acl = $regkey.GetAccessControl()
    $acl.SetAccessRule($rule)
    $regkey.SetAccessControl($acl)
    
    # Grant access to HKCR\Wow6432Node\CLSID
    $regkey=$regHKCRBaseKey.OpenSubKey("Wow6432Node\CLSID", $true) 
    $acl = $regkey.GetAccessControl()
    $acl.SetAccessRule($rule)
    $regkey.SetAccessControl($acl)
    
    # Grant access to HKCR\TypeLib
    $regkey=$regHKCRBaseKey.OpenSubKey("TypeLib", $true) 
    $acl = $regkey.GetAccessControl()
    $acl.SetAccessRule($rule)
    $regkey.SetAccessControl($acl)
    
    # Grant access to HKCR\Wow6432Node\Interface
    $regkey=$regHKCRBaseKey.OpenSubKey("Wow6432Node\Interface", $true) 
    $acl = $regkey.GetAccessControl()
    $acl.SetAccessRule($rule)
    $regkey.SetAccessControl($acl)
    
    # Grant access to HKCR\Interface
    $regkey=$regHKCRBaseKey.OpenSubKey("Interface", $true) 
    $acl = $regkey.GetAccessControl()
    $acl.SetAccessRule($rule)
    $regkey.SetAccessControl($acl)
    
    # Grant access to HKCR\AppID
    $regkey=$regHKCRBaseKey.OpenSubKey("AppID", $true) 
    $acl = $regkey.GetAccessControl()
    $acl.SetAccessRule($rule)
    $regkey.SetAccessControl($acl)
    
    推荐文章