К сожалению, ваш тест на 64 бита с использованием Platform.is64Bit () не делает то, что вы думаете ...
Он сообщает, является ли ваша JVM 32-битной или 64-битной, а не Windows 32-битной или 64-битной ...
Единственная причина, по которой ваш код работает должным образом, заключается в том, что перенаправитель реестра Windows позаботится о "магии" (доступ к нужному разделу реестра) за вас ...
Когда ваш код работает на 32-битной JVM на 64-битной Windows Platform.is64Bit () возвращает false, и вы используете subkey32 (то есть «Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall»).
Я, к сожалению, сделал ту же ошибку, что и вы, и выпустил программу с таким же ошибочным тестом после прочтения темы, как у вас, поэтому я сейчас публикую это, хотя этой теме уже несколько лет.