Редактирование реестра в VB.NET - PullRequest
0 голосов
/ 12 февраля 2012

Я использовал код, необходимый для изменения DWord реестра в VB.NET, однако мне нужно всегда щелкать правой кнопкой мыши и запускать от имени администратора, чтобы он работал. Чтобы предотвратить это, перед выполнением команды я передал учетные данные администратора, однако получаю сообщение об ошибке.

Код, который я использовал для этой цели,

  Dim regVersion As RegistryKey
    regVersion = Registry.LocalMachine.OpenSubKey("SYSTEM\\CurrentControlSet\\services\\USBSTOR", True)

    Try
    Dim intVersion As Integer = 4     
        intVersion = regVersion.GetValue("Start", 0)
        intVersion = intVersion + 1            
    End If
        Dim p As New ProcessInfo(regVersion.SetValue("Start", intVersion))
        p.UseShellExecute = False
        p.Domain = "domain"
        p.UserName = "Yoosuf"
        p.Password = New System.Security.SecureString()
        Dim q As New System.Security.SecureString()
        For Each c As Char In 
            q.Password.AppendChar(c)
        Next
        Process.Start(p)
        regVersion.Close()
    Catch es As Exception
    End Try

Однако я получаю сообщение об ошибке на линии

Dim p As New ProcessInfo()

Может кто-нибудь, пожалуйста, дайте мне знать, что я сделал ошибку

1 Ответ

2 голосов
/ 12 февраля 2012

Ошибка наиболее вероятна, потому что этот код:

Dim p As New ProcessInfo(regVersion.SetValue("Start", intVersion))

не имеет никакого смысла. Конструктор ProcessInfo ожидает строку, которая указывает имя файла или приложения, которое должно быть запущено. Вы передали ему результат метода RegistryKey.SetValue, который не возвращает значение.

Учитывая реальную проблему, которую вы хотите решить, это

Мне нужно всегда щелкать правой кнопкой мыши и запускать от имени администратора, чтобы он работал

тогда реальное решение - добавить манифест в ваше приложение, которое указывает, что оно должно быть запущено с правами администратора. Это избавит вас от необходимости щелкать правой кнопкой мыши и явно выбирать «Запуск от имени администратора» каждый раз. Вместо этого процесс приложения будет автоматически повышен (если это возможно), или UAC запросит у вас разрешение.

Чтобы сделать это в Visual Studio для приложения VB.NET, необходимо изменить манифест по умолчанию, встроенный в приложение. Вот шаги:

  1. Щелкните правой кнопкой мыши свой проект в обозревателе решений и выберите «Свойства».
  2. Откройте вкладку «Приложение».
  3. Нажмите «Просмотреть настройки Windows».
  4. Это открывает манифест по умолчанию. Измените элемент <requestedExecutionLevel> на requireAdministrator. Это должно выглядеть так:

    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...