설치 중“오류 : 지정된 캐스트가 유효하지 않습니다.”오류를 해결하는 방법은 무엇입니까?


2

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 (300,000 자 길이 제한으로 인해 붙여 넣을 수 없으며 날짜를 삭제했습니다)

답변:


2

이 오류는 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-ItemPropertyX 유형의 레지스트리 키를 읽고 데이터가 키 유형의 제한 조건과 일치하지 않는 키를 읽을 때 발생합니다 . 연구 1 연구 2 연구 3

이 경우 해결 방법 레지스트리에서 잘못된 키 ( $checkreg64및 조회 된 레지스트리 경로)를 찾아서 $checkreg32값 1을 가진 DWORD로 수동으로 다시 작성하는 것입니다.

최신 정보:

주석에서 쿼리 할 때 "지정된 캐스트가 유효하지 않습니다"라는 메시지가 표시됩니다 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)을 찾아보십시오. 여기가 실패입니다. 여기에 잘못된 하위 키가 있어야합니다. 이를 수정 한 후 명령을 다시 실행하십시오. 오류가 없으면 모든 준비가 된 것입니다. 오류가있는 키가 더 있으면 잘못된 하위 키를 찾아 수정하십시오.

내가 처음 제공 한 링크 된 예제 중 하나의 경우 사용자는 data = "(잘못된 DWORD (32 비트) 값)"인 REG_DWORD 키를 찾을 것으로 예상합니다. 이것이 바로 해결의 열쇠입니다.


전체 경로로 답변을 업데이트 할 수 있습니까? Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall레지스트리 편집기에서 탐색 했지만 계속 진행하는 방법을 모르겠습니다.
user598527

x64 예제의 경우 : Run Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.DisplayName -like '*Java 8*' } | select -expandproperty PSChildName. 결과가 {12345}이면 key를 확인하십시오 HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\{12345}\NoModify.
루트

이 명령에 대해이 오류가 발생합니다.Get-ItemProperty : Specified cast is not valid. At line:1 char:1 + Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Unin ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-ItemProperty], InvalidCastException + FullyQualifiedErrorId : System.InvalidCastException,Microsoft.PowerShell.Commands.GetItemPropertyCommand
user598527

문제의 위치를 ​​실수로 확인했습니다 (적어도 하나 이상). regedit를 통해 HKLM : \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall \으로 수동으로 이동하여 "Java 8"과 같이 DisplayName이 포함 된 하위 키를 찾아보십시오. 그것이 NoModify가있는 곳입니다. 이 토론을 채팅 으로 옮기려면 알려주세요 .
루트

문제는 검색 레지스트리를 적용 할 수 없다는 것입니다. 그러나 그것은 또 다른 질문입니다. Regedit에서 "java"를 검색했지만 Notepad ++ 폴더의 항목 만 찾을 수 있습니다.
user598527

0

방금이 문제가있었습니다. 나는했다 :

get-childitem hklm:\software\microsoft\windows\currentversion\uninstall\ |
  foreach { write-host $_.pspath; $_ } | get-itemproperty

HKLM:\software\microsoft\windows\currentversion\uninstall\nbi-nb-base-8.2.0.0.201609300101Netbeans 8.2 용 인으로 질식했습니다 . regedit에서 NoModify에 "(잘못된 DWORD (32 비트) 값)"이 있음을 알 수 있습니다. get-itemproperty -erroraction continue효과가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.