Пакетное чтение, если установлен .NET 4.0. Достаточно безопасно с рег-запросом?

В настоящее время я пытаюсь узнать, установлен ли .NET 4.0 на другом ПК через командную строку. Я использую следующую команду:

REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v Version

Если установлена ​​4.0, я получаю 4.0 ..... в результате, в то время как если вообще ничего не установлено, я получаю ошибку ключа реестра.

Теперь мой вопрос (поскольку я не могу воспроизвести его здесь):

Достаточно ли это безопасно, или я могу столкнуться с проблемами в случае установки 2.0 или 3.0, но НЕ 4.0? Таким образом, я все равно получу ошибку «ключ реестра не найден» или мне придется использовать здесь что-то другое?


person Thomas    schedule 01.10.2015    source источник
comment
См. Официальную статью Как определить, какой .NET Установлены версии Framework. Я думаю, это охватывает весь вопрос.   -  person wOxxOm    schedule 01.10.2015
comment
Да, но я его уже видел. Проблема в том, что он использует c # /. Net в основном для получения информации, но в моем случае мне нужно сделать это без участия .NET, поэтому я использовал запрос reg. По сути, ищу ту же статистику, но я не уверен, что произойдет, если будет установлена ​​версия 2.0 или 3.0 вместо 4.0. Если ключей там нет (что приводит к ошибке «ключ не найден», что было бы наилучшим возможным результатом, или если есть какой-то другой результат). Если версия не установлена, это ошибка ключа не найдена, но с 2.0 или 3.0 я не уверен, и статья, к сожалению, не охватывает этого.   -  person Thomas    schedule 01.10.2015
comment
Microsoft устала иметь дело со звонками в службу поддержки клиентов, когда они ищут обходной путь для проверки неработающей версии программного обеспечения. Поэтому они намеренно усложнили проверку версий. Номер версии Windows примечателен, об этом намеренно лгут и возвращают меньшее число. Они хотят, чтобы вы просто запустили программу установки. Это будет сделано очень быстро, когда уже будет соответствующая версия с последними обновлениями и исправлениями безопасности.   -  person Hans Passant    schedule 01.10.2015
comment
Только в тех случаях, когда разработчикам необходимо убедиться, есть ли определенные версии или нет ......... они получают больше вызовов таким образом (по крайней мере, если бы stackoverflow не существовал, это было бы так)   -  person Thomas    schedule 01.10.2015
comment
Из любопытства, что вы делаете, что вам нужно проверить установленную версию .NET вне установщика?   -  person Scott Chamberlain    schedule 01.10.2015
comment
Парсер журнала, который необходимо запускать на компьютерах, отличных от ПК, на которых установлены Windows. Распространение на них должно быть без установщика (вот почему мне нужно (ed) предварительно проверить, правильная ли у них версия фреймворка или нет ....... если бы они этого не сделали, моя программа даже не иметь возможность быть вызванным (это выяснилось, когда я случайно использовал framework 4.5 вместо 4.0). И поскольку у меня нет разрешения на установку .NET framework в случае его отсутствия, мне пришлось проверить жесткий способ (также известный как вышеуказанный пакет), но мне нужно было знать, достаточно ли этого для проверки или нужно сделать что-то дополнительное.   -  person Thomas    schedule 01.10.2015


Ответы (1)


Проверить, установлена ​​ли v4, довольно просто.

dir /b /ad "%windir%\microsoft.net\Framework\v4.*"

возвращение

v4.0.30319

Если вы хотите убедиться, что у вас установлена ​​последняя версия:

@echo off

for /f "delims=" %%a in (
   'dir /b /ad "%windir%\microsoft.net\Framework\*" ^|sort /r ^|findstr /r [0-9]'
) do (
      set "version=%%a"
      goto done
)
exit /b 0

:done
echo version %version%

Если вам нужно запустить последний конкретный исполняемый файл, например csc.exe

@echo off

for /f "delims=" %%a in (
   'dir /b /s /a-d "%windir%\microsoft.net\Framework\*csc.exe"^|sort /r'
) do (
      set "executable=%%a"
      goto done
)
exit /b 0

:done
echo executable %executable%

Я только что нашел здесь другие способы проверить, что .NET установлен с wmic, но при моей установке он выполняется довольно медленно.

person Paul    schedule 01.10.2015