PDA

Показать полную графическую версию : [проблема] UNI2ANSI.VBS и INTL.INF


ya158
16-12-2008, 19:32
Пытаюсь преобразовать INTL.INF (находиться в I386 дистрибутива) из UTF-16LE в ANSI при помощи UNI2ANSI.VBS. Но натолкнулся на следующую проблему:скрипт при работе выдаёт ошибку
Uni2Ansi.vbs(24, 5) Ошибка выполнения Microsoft VBScript: Недопустимый вызов или аргумент процедуры
Выяснил, что эта ошибка возникает из-зи строк в INTL.INF вида (строка №2130)
HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes","標準明朝",,"MS 明朝"
Подскажите, возможно ли преобразовать UNI2ANSI.VBS так, что бы он справлялся с такими файлами?

Amigos
16-12-2008, 20:18
что эта ошибка возникает из-зи строк в INTL.INF вида (строка №2130) »
если проблема в том чтобы хоть как то отконвертировать то

удалить строку, отконвентировать.
внести строчку в реестр , експортировать из реестра в REG - там уже китайские иероглифы должны быть в виде цифр
потом reg2inf и добавить строчку в уже отконвертированный файл.

есливозможно ли преобразовать UNI2ANSI.VBS так »то не в курсе.

ya158
16-12-2008, 20:36
если проблема в том чтобы хоть как то отконвертировать то
удалить строку, отконвентировать.
внести строчку в реестр , експортировать из реестра в REG - там уже китайские иероглифы должны быть в виде цифр
потом reg2inf и добавить строчку в уже отконвертированный файл. »
Приведи, пожалуйста, пример батника, который это всё сделает

Amigos
17-12-2008, 07:34
ya158, я не правильно понял исходное сообщение, я думал затык в одной 2130цатой строке.
В общем случае проблема решения не имеет. UNI2ANSI.VBS юзается для преобразования нормальных INF, в которых нет ничего кроме кириллицы и латиницы, т.е. Уникод для таких файлов явное излишество.

INTL.INF полценный уникодный файл, уникод там используется во весь рост.

единственная лазейка - уникодные значения используются для записи в реестр, а уникодные реестровые записи можно представить в виде цифр.

ya158
17-12-2008, 07:46
Amigos,
Может тогда есть какой-нибудь способ удаления некоторых строк из уникодного файла, не изменяя его уникодность (не преобразовывая его в ANSI)? Мне это надо для решения этой проблемы (http://forum.oszone.net/post-982233.html#post982233). Может быть существует какая-нибудь утилита, работающая из комстроки и позволяющая редактировать уникодные файлы?
единственная лазейка - уникодные значения используются для записи в реестр, а уникодные реестровые записи можно представить в виде цифр. »
А как это сделать из комстроки?

0rs
17-12-2008, 11:28
ya158,
Можно использавать gsar.exe в который через параметры -s и -r передавать юникод строку в шестнадцатиричном виде. Например следующая команда установит параметру NewAdministratorName значение root:
gsar.exe -s:x00;:x00N:x00e:x00w:x00A:x00d:x00m:x00i:x00n:x00i:x00s:x00t:x00a:x00t:x00o:x00r:x00N:x00a:x00m:x00 e:x00:x20:x00= -r:x00N:x00e:x00w:x00A:x00d:x00m:x00i:x00n:x00i:x00s:x00t:x00r:x00a:x00t:x00o:x00r:x00N:x00a:x00m:x00 e:x00:x20:x00=:x00:x22:x00r:x00o:x00o:x00t:x00:x22 -o defltwk.inf
Для преобразования в юникод в большинстве случаев достаточно добавить :x00 перед символом.

ya158
17-12-2008, 20:01
0rs,
я не программист, поэтому из твоего сообщения ничего не понял. Если можешь напиши поподробнее как при помощи командной строки удалить из юникодного файла строки, причём список строк для удаления находится в другом текстовом файле?

SOLON7
05-02-2009, 17:34
ya158, вот программа Marka Russinovicha.
Может помочь..

Strings v2.40
Working on NT and Win2K means that executables and object files
will many times have embedded UNICODE strings that you cannot
easily see with a standard ASCII strings or grep programs.
So we decided to roll our own.
Strings just scans the file you pass it for UNICODE (or ASCII) strings
of a default length of 3 or more UNICODE (or ASCII) characters.
Note that it works under Windows 95 as well.

http://technet.microsoft.com/en-us/sysinternals/bb897439.aspx

ya158
05-02-2009, 22:24
SOLON7,
Спасибо, но я уже нашел решение (http://forum.oszone.net/thread-91526-10.html).




© OSzone.net 2001-2012