if [19045] GEQ [%WinBuild%] みたいに [] で括ると文字列比較になっちゃって数値比較にならないから意図しない動作になるよ
ProductName, DisplayVersion, EditionID は必要ないんじゃない?後ろの方で使ってるのかな?
全部つぶさに見たわけじゃないけど、バージョンchkだけ、ちょっとあんまりだったから我慢出来ずに書き直してみた
https://pastebin.com/nP97mVZx