Как решить «ОШИБКА: указанное приведение недействительно». ошибка при установке?

707
user598527

В настоящее время я получаю эту ошибку при установке Java SE Runtime Environment ( jre8), обновление работало нормально:

Searching if new version exists... ERROR: Specified cast is not valid. The install of jre8 was NOT successful. Error while running 'C:\ProgramData\chocolatey\lib\jre8\tools\chocolateyInstall.ps1'. See log for details.  Chocolatey installed 0/1 packages. 1 packages failed. See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).  Failures - jre8 (exited -1) - Error while running 'C:\ProgramData\chocolatey\lib\jre8\tools\chocolateyInstall.ps1'. See log for details. 

chocolatey.log (я не могу вставить сюда из-за ограничения в 30 000 символов, я удалил даты)

2

1 ответ на вопрос

2
root

Эта ошибка является результатом Get-ItemPropertyсбоя. Из вашего журнала, часть скрипта, которая терпит неудачу, находится здесь:

 Write-Output "Searching if new version exists..." $checkreg64 = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion | Where-Object { $_.DisplayName -like '*Java 8*' -and ([Version]$_.DisplayVersion) -eq $version} -ErrorAction SilentlyContinue $checkreg32 = Get-ItemProperty HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion | Where-Object { $_.DisplayName -like '*Java 8*' -and ([Version]$_.DisplayVersion) -eq $version} -ErrorAction SilentlyContinue 

Эта ошибка возникает, когда Get-ItemPropertyожидается чтение ключа реестра типа X и чтение ключа, данные которого не соответствуют ограничениям типа ключа. исследование1 исследование2 исследование3

Решение в этом случае заключалось в том, чтобы найти недействительный ключ в реестре (пути реестра, которые запрашиваются $checkreg64и$checkreg32 ), и вручную заново создать его как DWORD со значением 1.

Обновить:

Из комментариев вы получаете «Указанный актер недействителен» при запросе Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*. Возможно, в этом расположении имеется несвязанный ключ, содержащий недопустимый подраздел, что приводит к сбою запроса к этому расположению. Мы должны иметь возможность анализировать каждый ключ по отдельности из места удаления, чтобы определить, к какому ключу у нас возникают проблемы.

Запустите ниже:

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | % { write-host "Key Name:" $_.PSChildName } 

Это должно вернуть некоторые результаты, затем вернет Specified castошибку. Ошибка произойдет с ключом, содержащим недопустимый подраздел.

Например, если результаты выше выглядят так:

Key Name: fake_key_name_1 Key Name: fake_key_name_2 Key Name: fake_key_name_3 Get-ItemProperty : Specified cast is not valid. 

Тогда последний ключ, который вы смогли успешно запросить, был fake_key_name_3. Ключ, который мы не могли запросить, был следующим ключом в списке. Откройте regedit и перейдите к следующему имени ключа (предположительно, fake_key_name_4). Вот где провал. Здесь должен быть недействительный подраздел. Исправьте это, затем повторите команду. Если вы не получили ошибок, все готово. Если вы получите больше ключей с ошибками, найдите и исправьте их недействительные подразделы.

В случае одного из связанных примеров, которые я изначально предоставил, пользователь может ожидать найти ключ REG_DWORD с data = "(недопустимое значение DWORD (32-битное))". Это ключ к исправлению.

Можете ли вы обновить ответ полными путями? Я перешел к `Computer \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall` в редакторе реестра, но не знаю, как продолжить. user598527 5 лет назад 0
Для примера x64: Запустите `Get-ItemProperty HKLM: \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ * | Where-Object {$ _. DisplayName -like '* Java 8 *'} | выберите -expandproperty PSChildName`. Если результат равен , проверьте ключ `HKLM: \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ \ NoModify`. root 5 лет назад 0
Я получаю эту ошибку для команды: `Get-ItemProperty: указанное приведение неверно. В строке: 1 символ: 1 + Get-ItemProperty HKLM: \ Software \ Microsoft \ Windows \ CurrentVersion \ Unin ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo: NotSpecified : (:) [Get-ItemProperty], InvalidCastException + FullyQualifiedErrorId: System.InvalidCastException, Microsoft.PowerShell.Commands.GetItemPropertyCommand` user598527 5 лет назад 0
Отлично, мы непреднамеренно подтвердили (хотя бы одно) местоположение (я) проблемы. Вручную перейдите к HKLM: \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ через regedit, просматривая каждый подраздел для того, который содержит DisplayName как "Java 8". Вот где будет NoModify. Дайте мне знать, если вы хотите переместить это обсуждение в [чат] (https://chat.stackexchange.com/rooms/118/root-access). root 5 лет назад 0
Проблема в том, что я не могу найти эффективный реестр поиска, но это другой вопрос. Я искал "java" в Regedit, но были найдены только записи в папке Notepad ++. user598527 5 лет назад 0
Страница Github для шоколадного пакета сопровождающего: https://github.com/proudcanadianeh/ChocoPackages/issues/18 user598527 5 лет назад 0
Я обновил свой ответ, чтобы включить больше шагов по устранению неполадок. root 5 лет назад 0
Вы получили что-нибудь с этим? root 5 лет назад 0
Извините, я приостановил тему на некоторое время, так как процесс требует моего уровня квалификации - я постараюсь закончить в начале следующей недели. Спасибо за беспокойство. user598527 5 лет назад 0