Вы все еще должны иметь возможность создать ярлык с переменной среды, используя COM-объект из VBScript или powershell. Метод « CreateShortcut » (более подробно также для аргументов здесь) способен на это. Хотя изначально это решение vbscript, вы можете вызвать его из командной строки powershell, например так:
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("C:\Users\Public\Desktop\My Java Shortcut.lnk")
$Shortcut.TargetPath = "%SMS_ADMIN_UI_PATH%\javaw.exe"
$Shortcut.Arguments = "-cp"
$Shortcut.Save()
Обратите внимание, что аргументы не попадают в целевой путь. Также это может не сработать, если ваша переменная окружения содержит пробелы.
Преимущество этого в том, что у вас есть настоящий ярлык, а не какая-то обертка, недостаток в том, что вы никогда не сможете изменить этот ярлык через диалоговое окно его свойств. Как только вы сделаете это, переменная снова будет заменена.
Если вы хотите обертку, я бы также предложил файл VBS, который полностью молчит. Создайте новый текстовый файл и вставьте строку
CreateObject("WScript.Shell").Run """%MY_OWN_JAVA_HOME%\bin\javaw.exe"" -cp", , False
там и сохраните его как «runmyjava.vbs» и создайте ярлык для этого файла, и у него не будет черных всплывающих окон, даже на доли секунды. Обратите внимание на дополнительные "" перед после пути к исполняемому файлу. Они нужны только в том случае, если переменная окружения содержит пробелы.