Не невнимательный — этого в статье действительно нет, режим «офлайн-пакет» у меня пока только в планах. Так что честно: готового «скачать-на-флешку-поставить» в текущей версии нет.
Что можно сделать прямо сейчас, обходным путём:
На машине с интернетом (подходящей по версии Windows или хотя бы совместимой) запустить утилиту от администратора — она поставит недостающие корневые сертификаты в реестр.
Экспортировать ветку HKLM\SOFTWARE\Microsoft\SystemCertificates\ROOT\Certificates в .reg-файл (правой кнопкой в regedit → «Экспорт»). Файл получится большой — там бинарные Blob-значения, — но это рабочий способ.
На офлайн-машине импортировать этот .reg (от администратора) и перезагрузиться.
Два важных нюанса для XP:
На XP предварительно нужен .NET Framework 3.5 — утилита без него не запустится (об этом как раз писал x89377 выше, и да, в статье про 2.0 была ошибка — извиняюсь).
Экспорт/импорт ветки реестра с сертификатами между разными версиями Windows в целом переносим, но лучше делать это между машинами одной архитектуры (x86 → x86), чтобы не ловить сюрпризов.
Полноценный офлайн-режим (скачать пакет на одной машине → поставить на другой без сети) я как раз планирую добавить — спасибо, что подтвердили, что это востребовано. Если хотите, могу отдельно черкнуть, когда будет готово.
Вы абсолютно правы, и мне искренне неловко. Сразу признаюсь: текст статьи я прогонял через ИИ для вычитки орфографии и стиля — и он, помимо правок по делу, дописал от себя то, чего в статье быть не должно было. Фраза «не требует .NET выше 2.0» — как раз его рук дело (я имел в виду «работает даже на древних машинах», а получилось фактически неверно). Так же он «поправил» и некоторые цифры. Виноват: надо было вычитывать внимательнее, а не доверять целиком. Спасибо, что заметили и ткнули — исправил.
По делу:
.NET 3.5 — да, требование именно такое, из-за HashSet<T>. Формулировку в статье поправил.
1081 сертификат — тут, скорее всего, расхождение в том, что считать. В CTL лежит полный список записей, включая отозванные, просроченные и не-корневые; утилита же отбирает только то, что реально нужно поставить и что отсутствует в локальном хранилище. Плюс список со временем растёт — в свежем STL действительно может быть больше тысячи записей. «~130» в статье было неудачным примером из старого лога; корректнее говорить «порядка сотен–тысячи записей в CTL, из которых ставятся только недостающие». Поправлю.
Ещё раз извините за путаницу — она моя, а не ваша.
Да, собирается. Достаточно csc.exe из состава .NET Framework 3.5 (C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe) — Visual Studio не нужна. Кладёте исходник в папку, запускаете csc /out:UpdateRootCertificates.exe Program.cs, и всё. Единственный нюанс — целиться надо именно в 3.5 (из-за HashSet<T>), а не в 2.0.
Отдельно оговорюсь: в тексте статьи про .NET 2.0 была моя ошибка (точнее — редакционная), об этом ниже в ответе x89377.
Огромное спасибо за отзыв! Как разработчику, мне невероятно приятно слышать это от реального бухгалтера, да еще и с таким стажем использования.А что входит в оставшиеся 10% проблем, которые программа пока не решает? Буду рад узнать, возможно, это можно будет исправить в следующих обновлениях.
Не невнимательный — этого в статье действительно нет, режим «офлайн-пакет» у меня пока только в планах. Так что честно: готового «скачать-на-флешку-поставить» в текущей версии нет.
Что можно сделать прямо сейчас, обходным путём:
На машине с интернетом (подходящей по версии Windows или хотя бы совместимой) запустить утилиту от администратора — она поставит недостающие корневые сертификаты в реестр.
Экспортировать ветку
HKLM\SOFTWARE\Microsoft\SystemCertificates\ROOT\Certificatesв.reg-файл (правой кнопкой вregedit→ «Экспорт»). Файл получится большой — там бинарныеBlob-значения, — но это рабочий способ.На офлайн-машине импортировать этот
.reg(от администратора) и перезагрузиться.Два важных нюанса для XP:
На XP предварительно нужен .NET Framework 3.5 — утилита без него не запустится (об этом как раз писал x89377 выше, и да, в статье про 2.0 была ошибка — извиняюсь).
Экспорт/импорт ветки реестра с сертификатами между разными версиями Windows в целом переносим, но лучше делать это между машинами одной архитектуры (x86 → x86), чтобы не ловить сюрпризов.
Полноценный офлайн-режим (скачать пакет на одной машине → поставить на другой без сети) я как раз планирую добавить — спасибо, что подтвердили, что это востребовано. Если хотите, могу отдельно черкнуть, когда будет готово.
Вы абсолютно правы, и мне искренне неловко. Сразу признаюсь: текст статьи я прогонял через ИИ для вычитки орфографии и стиля — и он, помимо правок по делу, дописал от себя то, чего в статье быть не должно было. Фраза «не требует .NET выше 2.0» — как раз его рук дело (я имел в виду «работает даже на древних машинах», а получилось фактически неверно). Так же он «поправил» и некоторые цифры. Виноват: надо было вычитывать внимательнее, а не доверять целиком. Спасибо, что заметили и ткнули — исправил.
По делу:
.NET 3.5 — да, требование именно такое, из-за
HashSet<T>. Формулировку в статье поправил.1081 сертификат — тут, скорее всего, расхождение в том, что считать. В CTL лежит полный список записей, включая отозванные, просроченные и не-корневые; утилита же отбирает только то, что реально нужно поставить и что отсутствует в локальном хранилище. Плюс список со временем растёт — в свежем STL действительно может быть больше тысячи записей. «~130» в статье было неудачным примером из старого лога; корректнее говорить «порядка сотен–тысячи записей в CTL, из которых ставятся только недостающие». Поправлю.
Ещё раз извините за путаницу — она моя, а не ваша.
Да, собирается. Достаточно
csc.exeиз состава .NET Framework 3.5 (C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe) — Visual Studio не нужна. Кладёте исходник в папку, запускаетеcsc /out:UpdateRootCertificates.exe Program.cs, и всё. Единственный нюанс — целиться надо именно в 3.5 (из-заHashSet<T>), а не в 2.0.Отдельно оговорюсь: в тексте статьи про .NET 2.0 была моя ошибка (точнее — редакционная), об этом ниже в ответе x89377.
Огромное спасибо за отзыв! Как разработчику, мне невероятно приятно слышать это от реального бухгалтера, да еще и с таким стажем использования.А что входит в оставшиеся 10% проблем, которые программа пока не решает? Буду рад узнать, возможно, это можно будет исправить в следующих обновлениях.