#vb.net #dcom
#vb.net #dcom
Вопрос:
Мне успешно удалось разработать процедуру изменения «разрешений доступа» для КОНКРЕТНОГО приложения с помощью vb.net . Это эквивалентно запуску «dcomcnfg» и изменению настройки путем выбора папки «Component services Computers My Computer DCOM Config» и конкретного приложения. Щелкнув правой кнопкой мыши по приложению и выбрав свойства и вкладку безопасность, можно добавлять или удалять разные учетные записи пользователей. Это отлично работает с этим кодом, показанным ниже.
Я изо всех сил пытаюсь придумать код, который изменит общесистемные эквивалентные «Разрешения доступа». Код должен быть эквивалентным или запускать ‘dcomcnfg’ и изменять настройку, щелкнув правой кнопкой мыши на моем компьютере в ‘Component services Computers My Computer’ и выбрав свойства и вкладку безопасность.
Я надеюсь, что смогу изменить свой существующий код, но поскольку я пытаюсь изменить общесистемные настройки, а не настройки конкретного приложения, я сталкиваюсь с препятствием. Я много искал в Google, но не могу разобраться. Приветствуются любые советы.
Private Sub ChangeApplicationDcomAccessSecuritySettings(AddUser As Boolean, RemoveUser As Boolean)
Dim strComputer As String = "."
Dim objWMIService As New Object
objWMIService = GetObject("winmgmts:" amp; "{impersonationLevel=impersonate, (Security)}!\" amp; strComputer amp; "rootcimv2")
' Get an instance of Win32_SecurityDescriptorHelper
Dim objHelper As New Object
objHelper = GetObject("winmgmts:\" amp; strComputer amp; "rootCIMV2:Win32_SecurityDescriptorHelper")
' Obtain an instance of the the class
' using a key property value.
Dim objCosmosApp As Object = objWMIService.Get("Win32_DCOMApplicationSetting.AppID='" amp; OPCServerApplicationID.Trim amp; "'")
' Get the existing security descriptor for the App
Dim objSD As New Object
objSD = Nothing
Dim ret As Object
ret = objCosmosApp.GetAccessSecurityDescriptor(objSD)
If ret <> 0 Then
MessageBox.Show("Could not get security descriptor: " amp; ret)
End If
' Convert file security descriptor from Win32_SecurityDescriptor format to SDDL format
Dim SDDLstring As String = ""
ret = objHelper.Win32SDToSDDL(objSD, SDDLstring)
If ret <> 0 Then
MessageBox.Show("Could not convert to SDDL: " amp; ret)
Else
End If
' Set the Launch security descriptor for the App
' the sidString here the is the securityidentifier for the username that is to be added or removed converted to a string
If AddUser = True And RemoveUser = False Then
SDDLstring = SDDLstring amp; "(A;;CCDCLCSWRP;;;" amp; sidString amp; ")"
End If
If AddUser = False And RemoveUser = True Then
Dim temporarystring As String = "(A;;CCDCLCSWRP;;;" sidString ")"
SDDLstring = SDDLstring.Replace(temporarystring, "")
End If
ret = objHelper.SDDLToWin32SD(SDDLstring, objSD)
If ret <> 0 Then
MessageBox.Show("Could not translate SDDL String to Win32SD: " amp; ret)
End If
ret = objCosmosApp.SetaccessSecurityDescriptor(objSD)
If ret <> 0 Then
MessageBox.Show("Could not set security descriptor: " amp; ret)
End If
End Sub
Комментарии:
1. Я обновил код, чтобы включить объявление Sub, как было предложено.