通过 PowerShell 更改 DCOM 对象权限后要重新启动什么?
What to restart after changing DCOM object permissions via PowerShell?
我正在使用 PowerShell 成功设置 DCOM 对象的权限。
虽然之后我的软件使用 DCOM 对象时,权限更改直到我重新启动计算机才被识别。
如何防止重启?有没有一个component/service我改权限后可以重启?
我正在使用此代码更改权限:
$apiDCOMObj = Get-WmiObject -Query ('SELECT * FROM Win32_DCOMApplicationSetting WHERE Caption = "MyAPI"') -EnableAllPrivileges
$descrLaunch = $apiDCOMObj.GetLaunchSecurityDescriptor().descriptor
$descrAccess = $apiDCOMObj.GetAccessSecurityDescriptor().descriptor
$trusteeObj = ([wmiclass]'Win32_Trustee').psbase.CreateInstance()
$trusteeObj.Domain = "NT AUTHORITY"
$trusteeObj.Name = "NETWORK SERVICE"
$aceLaunch = ([wmiclass]'Win32_ACE').psbase.CreateInstance()
$aceLaunch.AccessMask = 11 # Mask for Local Launch and Local Activation
$aceLaunch.trustee = $trusteeObj
$aceAccess = ([wmiclass]'Win32_ACE').psbase.CreateInstance()
$aceAccess.AccessMask = 3 # Mask for Local Access
$aceAccess.trustee = $trusteeObj
$descrLaunch.DACL += [System.Management.ManagementBaseObject]$aceLaunch
$descrAccess.DACL += [System.Management.ManagementBaseObject]$aceAccess
$apiDCOMObj.SetLaunchSecurityDescriptor($descrLaunch)
$apiDCOMObj.SetAccessSecurityDescriptor($descrAccess)
您可以致电Restart-Service。
Restart-Service -Name <your_service_name>
这将使用新权限重新启动服务。
这看起来很奇怪,但是像
这样的查询
Get-WmiObject -Query "select * from Win32_Bios"
在刷新 DCOM 名称空间的安全性方面对我有用。
我正在使用 PowerShell 成功设置 DCOM 对象的权限。
虽然之后我的软件使用 DCOM 对象时,权限更改直到我重新启动计算机才被识别。
如何防止重启?有没有一个component/service我改权限后可以重启?
我正在使用此代码更改权限:
$apiDCOMObj = Get-WmiObject -Query ('SELECT * FROM Win32_DCOMApplicationSetting WHERE Caption = "MyAPI"') -EnableAllPrivileges
$descrLaunch = $apiDCOMObj.GetLaunchSecurityDescriptor().descriptor
$descrAccess = $apiDCOMObj.GetAccessSecurityDescriptor().descriptor
$trusteeObj = ([wmiclass]'Win32_Trustee').psbase.CreateInstance()
$trusteeObj.Domain = "NT AUTHORITY"
$trusteeObj.Name = "NETWORK SERVICE"
$aceLaunch = ([wmiclass]'Win32_ACE').psbase.CreateInstance()
$aceLaunch.AccessMask = 11 # Mask for Local Launch and Local Activation
$aceLaunch.trustee = $trusteeObj
$aceAccess = ([wmiclass]'Win32_ACE').psbase.CreateInstance()
$aceAccess.AccessMask = 3 # Mask for Local Access
$aceAccess.trustee = $trusteeObj
$descrLaunch.DACL += [System.Management.ManagementBaseObject]$aceLaunch
$descrAccess.DACL += [System.Management.ManagementBaseObject]$aceAccess
$apiDCOMObj.SetLaunchSecurityDescriptor($descrLaunch)
$apiDCOMObj.SetAccessSecurityDescriptor($descrAccess)
您可以致电Restart-Service。
Restart-Service -Name <your_service_name>
这将使用新权限重新启动服务。
这看起来很奇怪,但是像
这样的查询Get-WmiObject -Query "select * from Win32_Bios"
在刷新 DCOM 名称空间的安全性方面对我有用。