Сетевое имя юзера OFFICE

Обсуждение технических вопросов по продуктам Novell

Сообщение Андрей Троценко » 21 июл 2005, 16:03

SunTechnik писал(а):...В свойствах пользователя все написано на русском языке.
При попытке посмотреть, кто держит файл с другой станции эти свойства (имя пользователя) выдается кракозяблами.
Чего делать? И лечится вообще?...


Грамотей, писавший эту штуку, наивно полагал, что для преобразования имени пользователя в уникод (а именно в нем эти два параметра офис пишет в реестр), достаточно взять оригинальную ANSI-строку, и, дополнить каждый байт нулевым старшим байтом. Случай типичный для тамошних буржуев. Ан не так.

Вывод понятен ?
Аватара пользователя
Андрей Троценко
 
Сообщения: 529
Зарегистрирован: 31 июл 2002, 13:54
Откуда: Киев, Украина

Сообщение Андрей Тр. aka RH » 21 июл 2005, 16:13

Андрей Троценко писал(а):Вывод понятен ?
Писать автору ! :lol:
Даешь отдельный раздел по ZENworks ... :bad-words: .. и печати !
Аватара пользователя
Андрей Тр. aka RH
 
Сообщения: 3937
Зарегистрирован: 18 июн 2002, 11:27

Сообщение SunTechnik » 21 июл 2005, 18:02

жопа. свойства двухсот юзеров переписывать.
SunTechnik
 
Сообщения: 56
Зарегистрирован: 01 апр 2005, 12:33
Откуда: Казань, Татарстан

Сообщение SunTechnik » 21 июл 2005, 18:21

Ненавижу русский язык!
SunTechnik
 
Сообщения: 56
Зарегистрирован: 01 апр 2005, 12:33
Откуда: Казань, Татарстан

Сообщение Андрей Тр. aka RH » 21 июл 2005, 18:28

SunTechnik писал(а):жопа. свойства двухсот юзеров переписывать.
Что, вручную что ли ?
Даешь отдельный раздел по ZENworks ... :bad-words: .. и печати !
Аватара пользователя
Андрей Тр. aka RH
 
Сообщения: 3937
Зарегистрирован: 18 июн 2002, 11:27

Сообщение Андрей Троценко » 22 июл 2005, 00:25

SunTechnik писал(а):жопа. свойства двухсот юзеров переписывать.


М-да, адекватное решение вопроса - это не для русского человека. ... А не назвать ли нам кошку кошкой ?... (с)
За то время, что вы затратите на переписывание 200х аттрибутов, можно быстро сварганить масенькую програмулечку (C/Pascal/VB наконец), которая два параметра коммандной строки прописывает в соответствующие ветви реестра в уникоде (можно в цикле, от 7 до 12 - чтобы версии офиса от 97 до 2004 :!: работали). Вызывать ее ЗЕНом, передавая любой ZEN-макрос (в нашем случае) - аттрибуты объекта.

Несколько лет назад, я натолкнувшись на ту же Ж что и Вы, перенял идею, и, для кого-то такие пару строк написал. Исходники - понятия не имею где, бинарник слил, но версии офиса, с которыми он работает - не помню. Бинарник здесь (временно): http://www.pro-za.com.ua/~ATrotsenko/ZENMSO.exe Может хоть в качестве источника энузиазма пойдет...
Аватара пользователя
Андрей Троценко
 
Сообщения: 529
Зарегистрирован: 31 июл 2002, 13:54
Откуда: Киев, Украина

Сообщение SunTechnik » 22 июл 2005, 10:37

Ниче не понял.
Спешу внести ясность.
Если бы я тыл таким ваще сильным парнем в новелле и юзал ЗЕНи ваще шарил бы во всем, то наверное вопросов, которые рискуют показаться идиотскими, не задавал бы...
Во вторых, ну не программист я, не могу...
И в третьих, а нельзя ли вашему экзешнику просто в логин скрипте передавать %FULL_NAME в качестве аргумента или %логин_наме? У меня не получилось... может, дело в версии офиса хр?
SunTechnik
 
Сообщения: 56
Зарегистрирован: 01 апр 2005, 12:33
Откуда: Казань, Татарстан

Сообщение Андрей Троценко » 22 июл 2005, 11:44

SunTechnik писал(а):...а нельзя ли вашему экзешнику просто в логин скрипте передавать %FULL_NAME в качестве аргумента или %логин_наме? У меня не получилось... может, дело в версии офиса хр?


Передавать можно и нужно. А насчет версии - да, наверняка. По какую версию там цикл - не помню...
Аватара пользователя
Андрей Троценко
 
Сообщения: 529
Зарегистрирован: 31 июл 2002, 13:54
Откуда: Киев, Украина

Сообщение SunTechnik » 22 июл 2005, 12:17

Хочу дать задание нашим программерам:
Давайте сформируем тз.
Короче, грубо тз звучит так:
Нужна программа, которая в ка честве аогумента имеет строку в кодировке ср866. Программа перекодирует строку в Юникод и записывает получившуюся строку в определенный ключ реестра.
Условие один : точно в свойствах юзера написано в кодировке ср866?
условие два : а в какой ключ реестра? или ключи?
SunTechnik
 
Сообщения: 56
Зарегистрирован: 01 апр 2005, 12:33
Откуда: Казань, Татарстан

Сообщение Андрей Троценко » 22 июл 2005, 13:27

SunTechnik писал(а):Хочу дать задание нашим программерам:
Давайте сформируем тз.
Короче, грубо тз звучит так:
Нужна программа, которая в ка честве аогумента имеет строку в кодировке ср866. Программа перекодирует строку в Юникод и записывает получившуюся строку в определенный ключ реестра.
Условие один : точно в свойствах юзера написано в кодировке ср866?
условие два : а в какой ключ реестра? или ключи?


По такому ТЗ Вам программеры напишут...
Ключ виден в бинарнике (ZENMSO.exe): в разделе HKCU\SoftWare\Microsoft\Office\%d.0\Common\UserInfo (где %d - версия офиса 7-11 (или уже 12) ), параметры UserName и UserInitials (не поленитсь посмотреть на них). Значения - бинарные, уникодной строкой. Передавать из командной строки. Мне чем столько рассказывать быстрее было написать уже, но, проверить не на чем - винды под руками нет :D
Аватара пользователя
Андрей Троценко
 
Сообщения: 529
Зарегистрирован: 31 июл 2002, 13:54
Откуда: Киев, Украина

кстати

Сообщение Forestman » 22 июл 2005, 21:54

Код: Выделить всё
if $cmdline[0] = 0 then exit 1
if $cmdline[1]="/U" or $cmdline[1]="/u" then
  for $i=9 to 11
    Regdelete("HKEY_CURRENT_USER\Software\Microsoft\Office\" & $i & ".0\Common\UserInfo", "UserName")
    Regdelete("HKEY_CURRENT_USER\Software\Microsoft\Office\" & $i & ".0\Common\UserInfo", "UserInitials")
  next
  exit 0
endif
dim $s=""
dim $s1=""
dim $s2=""
dim $s3=""
for $i=1 to $cmdline[0]
  $s=$s & $cmdline[$i] & " ";
  $s1=$s1 & stringleft($cmdline[$i],1)
next

$s=stringleft($s,stringlen($s)-1)

$s2=str_hex($s)
$s3=str_hex($s1)

$s2=$s2 & "0000";
$s3=$s3 & "0000";

for $i=9 to 11
  Regdelete("HKEY_CURRENT_USER\Software\Microsoft\Office\" & $i & ".0\Common\UserInfo", "UserName")
  RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Office\" & $i & ".0\Common\UserInfo", "UserName", "REG_BINARY",$s2)
  Regdelete("HKEY_CURRENT_USER\Software\Microsoft\Office\" & $i & ".0\Common\UserInfo", "UserInitials")
  RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Office\" & $i & ".0\Common\UserInfo", "UserInitials", "REG_BINARY",$s3)
next

Func str_hex($str)
dim $str2=""
for $j=1 to stringlen($str)
  if asc(stringmid($str,$j,1)) < 192 then
      $str2=$str2 & hex(asc(stringmid($str,$j,1)),2) & "00";
    else
      $str2=$str2 & hex(asc(stringmid($str,$j,1))-176,2) & "04";
  endif
next
return $str2
endFunc


за час неторопясь накропал для autoit 3.1
в логинскрипте вызываю через
@office.exe %LAST_NAME %GIVEN_NAME
через ключ /U удаляет инфу, для визио не походит
выложил вот тут
Лесовой Роман
г.Нижневартовск
Forestman
 
Сообщения: 77
Зарегистрирован: 05 июн 2002, 18:38
Откуда: Нижневартовск

Сообщение SunTechnik » 25 июл 2005, 10:47

Спасибо, брат.
Уважуха.
Буду учить албанский и бэйсик :D
SunTechnik
 
Сообщения: 56
Зарегистрирован: 01 апр 2005, 12:33
Откуда: Казань, Татарстан

Пред.

Вернуться в Novell

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

cron