2014-10-09 2 views
0

Я пробовал весь день, чтобы заставить это работать, и я не могу понять, в чем проблема. Я собрал небольшое приложение Windows Form для ручной очистки остатков от установки, которая удаляется по всей компании. Все это делается за исключением очистки реестра.Не удается удалить раздел реестра Visual Studio Express 2013

Все, что я просто пытаюсь сделать, это удалить дерево subkey/subkey. Я использую приведенный ниже код, чтобы сделать это в разных местах. Каждый раз, когда я нажимаю кнопку, генерируется исключение, указывающее, что раздел не существует. Я triple проверил местоположения subkeys и не могу иметь никакого смысла это. Похоже, у меня есть разрешение на ключ, так как я зарегистрирован как администратор, а группа «Администраторы» имеет полный доступ к ключу; но он не бросает ArgumentException независимо от того, что:

Private Sub btnRegDelete_Click(sender As Object, e As EventArgs) Handles btnRegDelete.Click 
     My.Computer.Registry.LocalMachine.DeleteSubKey("Software\test") 
    End Sub 

Должно быть, просто не так ли? Я также попытался использовать логическое значение:

Private Sub btnRegDelete_Click(sender As Object, e As EventArgs) Handles btnRegDelete.Click 
     My.Computer.Registry.LocalMachine.DeleteSubKey("Software\test", true) 
    End Sub 

, а также открытие родительский ключ:

Public Sub fnDelete() 
     Dim oRegKey As RegistryKey 

    oRegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE", True) 
    oRegKey.DeleteSubKeyTree("test") 
    oRegKey.Close() 
End Sub 

Private Sub btnRegDelete_Click(sender As Object, e As EventArgs) Handles btnRegDelete.Click 
    fnDelete() 
    End Sub 

Это прекрасно работает в улье current_user, но не под LocalMachine.

Любые предложения были бы замечательными. Я уверен, что мне не хватает чего-то глупого, и это должно быть так просто, просто не знаю, что.

+0

Вы управляли администратором? (вход в систему как администратор больше не означает в Windows). Какая версия Windows? – TyCobb

+0

Эй, спасибо, что подобрали это. То же самое, если я запускаю приложение напрямую как asministrator. С попыткой ... Catch statement, по-прежнему бросает «не может удалить дерево подраздела, потому что подраздел не существует» для ex-сообщения. Есть ли определенный набор кода, который вы бы рекомендовали использовать для редактирования LocalMachine Hive? – ganjeii

+0

Итак, я думаю, что, возможно, понял это, но я не уверен, как это исправить. Я запускаю 64-разрядную ОС Windows 7 Pro. Кажется, что приложение работает как x86 и выглядит по умолчанию в ключе «SOFTWARE \ wow6432Node», хотя я говорю ему, чтобы посмотреть в «ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ», это действительно выглядит в «SOFTWARE \ wow6432Node». Несомненно, мне нужно, чтобы вы могли видеть и то, и другое. Есть ли способ сказать приложение о x64, но все же сохранить его совместимым с x86? – ganjeii

ответ

0

Только в случае, если кто-то нападет на это. Решение состояло в том, чтобы отменить «Предпочитайте 32-разрядный» процессор от Проект> Свойства> Компиляция опций в Visual Studio. «Целевой ЦП:» также должен быть установлен на «AnyCPU», который не рекомендуется применять для определенных приложений.