在WiX中设置DCom安全设置

时间:2014-03-24 20:11:23

标签: windows wix dcom wix3.8

我需要通过我的安装程序设置dcom安全性,并且想知道在WiX中是否有本机方式来执行此操作。我希望通过以下对话框授予用户创建安装Access和Launch and Activate权限的权限:

enter image description here

我通过转到控制面板 - >管理工具 - >组件服务来访问它。右键单击“我的电脑” - >“属性”,然后转到“COM安全”选项卡。

我是否必须创建自定义操作才能执行此操作?

1 个答案:

答案 0 :(得分:4)

我最终使用了名为dcomperm的平台sdk中的一个实用程序,并在WiX中使用自定义操作来执行此操作,因为我不认为WiX中存在此功能。它涉及到执行此操作的几个步骤,因为实际下载编译工具似乎很困难。

我必须做以下事情:

  1. 下载并安装平台sdk
  2. 在visual studio中创建一个新的空c ++项目(我使用2010)
  3. 将Program Files \ Microsoft Platform SDK \ Samples \ Com \ Fundamentals \ DCom \ DComPerm中的所有文件添加到项目中。
  4. 将运行时库更改为MT(多线程)。这很重要,因为它将包含编译的exe文件中的必要文​​件。否则,您必须安装vc ++ redistributable软件包才能使用此工具。请参阅下面有关如何执行此操作的屏幕截图 enter image description here
  5. 在WiX中创建自定义操作以运行以下两个命令(ExactaMobile是我的用户名):
    dcomperm.exe -dl设置ExactaMobile许可证
    dcomperm.exe -da设置ExactaMobile许可
  6. 以下自定义操作是我添加到WiX的内容:

    <CustomAction Id='GrantDcomAccessPermissions' 
                  Directory='ToolsFolder' 
                  Execute='deferred' 
                  ExeCommand='[ToolsFolder]dcomperm.exe -da set ExactaMobile permit' 
                  Return='ignore'/>
    
    <CustomAction Id='GrantDcomLaunchAndActivatePermissions'
                  Directory='ToolsFolder'
                  Execute='deferred'
                  ExeCommand='[ToolsFolder]dcomperm.exe -dl set ExactaMobile permit'
                  Return='ignore'/>
    
    <InstallExecuteSequence>      
      <Custom Action="GrantDcomAccessPermissions" After="InstallFiles">NOT Installed</Custom>
      <Custom Action="GrantDcomLaunchAndActivatePermissions" After="InstallFiles">NOT Installed</Custom>
    </InstallExecuteSequence>
    

    以下是dcomperm的更完整的使用列表:

    Syntax: dcomperm <option> [...]  
    Options:  
       -da <"set" or "remove"> <Principal Name> ["permit" or "deny"]  
       -da list  
           Modify or list the default access permission list  
    
       -dl <"set" or "remove"> <Principal Name> ["permit" or "deny"]  
       -dl list  
           Modify or list the default launch permission list  
    
       -aa <AppID> <"set" or "remove"> <Principal Name> ["permit" or "deny"]  
       -aa <AppID> default  
       -aa <AppID> list  
           Modify or list the access permission list for a specific AppID  
    
       -al <AppID> <"set" or "remove"> <Principal Name> ["permit" or "deny"]  
       -al <AppID> default  
       -al <AppID> list  
           Modify or list the launch permission list for a specific AppID  
    
       -runas <AppID> <Principal Name> <Password>  
       -runas <AppID> "Interactive User"  
           Set the RunAs information for a specific AppID  
    
    Examples:  
       dcomperm -da set redmond\t-miken permit  
       dcomperm -dl set redmond\jdoe deny  
       dcomperm -aa {12345678-1234-1234-1234-00aa00bbf7c7} list  
       dcomperm -al {12345678-1234-1234-1234-00aa00bbf7c7} remove redmond\t-miken  
       dcomperm -runas {12345678-1234-1234-1234-00aa00bbf7c7} redmond\jdoe password  
    

    希望有人发现这很有用,因为我很难确切地追踪到如何做到这一点。