Добрый день.
К слову, уже начиная с Windows XP (почти 20 лет назад), введено расширение .cmd для новых скриптов, а .bat оставлено старых DOS скриптов, как своеобразный символ, что консоль на новых операционных системах уже не то же самое. Так что на windows server 2016 уже глаз режет название bat (хоть суть не очень меняется).
1) Самый простой способ узнать имя контейнера: типично, в папке ab-cd123.000 лежит файл name.key с именем контейнера. В начале там заголовок (DER ASN.1 структура, из которой можно считать длину имени), потом собственно имя контейнера в кодировке windows-1251. Если name.key сделан штатно криптопровайдером и его не правили, то в общем-то нет причин читать длину, просто можно отступить от начала 4 байта (для длины имени менее 125 байт - соответственно длина файла name.key менее 129 байт). Если правили, то в конце могут быть лишние символы, так что нужно считать длину - байт перед именем (для длины имени менее 125 байт). Если длиннее, то надо уже разбираться с ASN.1 полноценно. Так не придется парсить вывод программы.
Пример: name.key длины 54 байта, первые 4 такие: 0x30 0x34 0x16 0x32 = SEQUENCE (0x30) длина=54 (0x34), IA5STRING (0x16) длина=50 (0x32). Другими словами, длина первой структуры совпадает с длиной файла, то есть никакого мусора в конце файла нет. Длина второй структуры 50 байт - это 50 символов имени. Пропускаем 4 байта, читаем 50 байт названия контейнера.
2) Аналогично с копированием в реестр. Технически при копировании в реестре создается раздел с именем контейнера, в котором 6 параметров, соответствующих названию файлов key в папке ab-cd123.000. Можно просто считать содержимое 6 файлов, перевести в шестнадцатиричный вид каждый байт и записать в реестр командой reg add либо записать .reg файл и добавить regedit ом. Основной вопрос с определением sid нужного пользователя.
3) вместо subst можно использовать mklink /d или mklink /j в корень какого-то диска. Создастся что-то типа ярлыка на папку, но в отличие от ярлыка символическая ссылка или соединение работают на уровне файловой системы, но есть для большинства программ не отличаются от обычной папки.
4) в версии 5.0 есть HDIMAGE (считыватель Директория), то есть можно просто папку ab-cd123.000 скопировать в определенное место в профиле пользователя.
Как реализовать 1 или 2 в cmd файле конечно вопрос интересный, способ наверняка есть, но я не настолько часто пользуюсь консолью. Как обходной маневр, использую конструкцию cmd - vbs/js - cmd: основной cmd запускает vbs/js (записывающий второй cmd) потом второй cmd. В vbs/js возможностей автоматизации побольше.
Отредактировано пользователем 10 декабря 2020 г. 8:17:01(UTC)
| Причина: Не указана