Вторник, 08.10.2024, 01:54
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Проблема запуска механизмов подсистемы под неполными правами
DarthAnyanДата: Вторник, 05.03.2013, 10:13 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 8
Репутация: 3
Статус: Оффлайн
Иногда при работе в терминалке во враждебной среде (когда мы в терминалке работаем под пользователем с донельзя порезанными правами) ИР-овские механизмы (например, Консоль Запросов) не запускаются, спотыкаясь о функцию в обработке ирПлатформа:


Код
Функция ПолучитьТекущееВремяВМиллисекундах() Экспорт
     
    Возврат WinAPI.timeGetTime();
     
    //Если ВремяОбъект = Неопределено Тогда
       Если JavaScript = Неопределено Тогда
          Попытка
              JavaScript = Новый COMОбъект("MSScriptControl.ScriptControl");
          Исключение
             Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);
             Возврат 0;
          КонецПопытки;
           JavaScript.Language = "javascript";
       КонецЕсли;
    //   ВремяОбъект = JavaScript.Eval("new Date()");
    //КонецЕсли;
    //Время = ВремяОбъект.getTime();
    Время = JavaScript.Eval("new Date().getTime()");
     Возврат Время;
     
КонецФункции


Ошибка происходит из-за того, что WinAPI = Неопределено (не получилось инициализировать COM-объект из-за порезанных прав). И весь код, который пытается посчитать время через жабаскрипт, никогда не отрабатывает...

Эмпирически пока получен обходной маневр:

Код
Функция ПолучитьТекущееВремяВМиллисекундах() Экспорт
Если WinAPI <> Неопределено Тогда
     Возврат WinAPI.timeGetTime();
Иначе
     //Если ВремяОбъект = Неопределено Тогда
     Если JavaScript = Неопределено Тогда
     Попытка
           JavaScript = Новый COMОбъект("MSScriptControl.ScriptControl");
     Исключение
     Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);
     Возврат 0;
     КонецПопытки;
        JavaScript.Language = "javascript";
     КонецЕсли;
     //   ВремяОбъект = JavaScript.Eval("new Date()");
     //КонецЕсли;
     //Время = ВремяОбъект.getTime();
         Время = JavaScript.Eval("new Date().getTime()");
         Возврат Время;
КонецЕсли;
КонецФункции

Собственно, вопрос - это ошибка в коде или хитрый умысел?
 
tormozitДата: Вторник, 05.03.2013, 10:39 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
Просьба указать версию подсистемы, версию Windows, группы пользователя Windows.

WinAPI должно быть доступно и без прав администратора, т.к. DynamicWrapperX регистрируется в HKCU, а не HKLM. Поэтому был оставлен только способ получения времени через него.

Для расследования желательно протрассировать выполнение кода        
Код
WinAPI = ПолучитьCOMОбъектИзМакета("DynamicWrapperX", "DynamicWrapperX");

Внутри метода ЗарегистрироватьПолучитьCOMОбъект после выполнения строк типа
   
Код
КоманднаяСтрока = "regsvr32 /s """ + ПолноеИмяDll + """";

Надо попытаться выполнить в командной строке Windows команду из переменной КоманднаяСтрока без ключа "/s". Также на всякий случай нужно проверить бинарно идентичность файла библиотеки и файла по пути из переменной ПолноеИмяDll.
 
tormozitДата: Среда, 05.06.2013, 10:10 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
От использования MSScriptControl.ScriptControl пришлось отказаться, т.к. с ним проблемы в 64 битном режиме.
Удалось ли решить проблему с DynamicWrapper?
 
DarthAnyanДата: Среда, 05.06.2013, 22:07 | Сообщение # 4
Рядовой
Группа: Проверенные
Сообщений: 8
Репутация: 3
Статус: Оффлайн
Когда попробовал выполнить в консоли команду для HKCU, которую сгенерировала строка

Код КоманднаяСтрока = "regsvr32 /s /i""" + ПолноеИмяDll + """";

без ключа /s, система ругнулась на некорректное имя файла - добавил пробел после /i -- в консоли регистрация прошла. 

При попытке деинсталлировать с ключом /u система ругнулась страшными словами - так что повторить эксперимент не удалось. 

А сейчас доступа к той сети нет, эксперименты ставить не на ком.
 
  • Страница 1 из 1
  • 1
Поиск: