Программно добавлять или удалять пользователя для общесистемных «разрешений доступа» с помощью vb.net

#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, как было предложено.