К вопросу запуска 32-битных приложений на 64-битных системах


      Сейчас все больше программного обеспечения переносится на 64-битные системы Windows. При этом разработчики старались обеспечить обратную совместимость и работу 32-хбитных приложений в таких системах.

      Но не всегда 32-битное приложение соизволяет запуститься и нормально работать. Для решения вопросов совместимости есть соответствующие разделы документации и соответствующие инструменты. Но не всегда все так сложно. Вот несколько указаний как можно поправить дело.

      Во-первых, надо понимать, что система x64 поддерживает работу 32-битных приложений и для этого эмулирует подходящее окружение. В частности для этого есть специальные разделы реестра в ветке SysWOW64, с которыми работают все 32-битные приложения, в том числе там регистрируются 32-битные COM-приложения. Это наиболее известный факт.

      Но есть еще один полезный факт: системные исполняемые модули на диске так же присутствуют в двух видах: 64-битные по обычным путям %systemroot%, а 32-битные по пути %systemroot%\SysWOW64.

      Как это использовать?

      Если вы хотите зарегистрировать 32-битную DLL, то вам нужно вызывать:

%systemroot%\SysWOW64\regsvr32.exe <Имя DLL>

      Если вы хотите запустить VB-скрипт, который создает 32-битные COM-объекты (например, Internet Explorer или Word), то вам нужно вызывать:

%systemroot%\SysWOW64\cscript.exe <Имя скрипта>

      Третий факт. Если на конкретной системе нужно запускать все скрипты в 32-битном режиме, то можно поменять ассоциацию в реестре. Ключи реестра описаны в статье KB248121

HKEY_CLASSES_ROOT\JSEFile\Shell\Open2\Command

HKEY_CLASSES_ROOT\JSFile\Shell\Open2\Command

HKEY_CLASSES_ROOT\VBEFile\Shell\Open2\Command

HKEY_CLASSES_ROOT\VBSFile\Shell\Open2\Command

HKEY_CLASSES_ROOT\WSFFile\Shell\Open2\Command

(Конечно можно менять не все значения, а только для нужного скриптового языка)

Старое значение:

Default = C:\Windows\System32\CScript.exe «%1» %*

Новое значение:

Default = C:\Windows\System32\ SysWOW64\CScript.exe «%1» %*

 

      Надеюсь, эти нехитрые приемы избавят вас от головной боли при переносе приложений на 64-битные системы.

Реклама

Обновление Помощника по развертыванию Exchange Server


Обновился Помощник по развертываю Exchange Server. Добавлен сценарий «гибридного развертывания»

Этот инструмент предназначен для облегчения подготовки внедрения Exchange Server 2010 и его разворачивания. Сначала Помощник задает вам небольшое количество вопросов, а потом генерирует инструкции по разворачиванию Exchange Server 2010 с учетом особенностей вашей среды, которые при необходимости можно вывести в pdf документ.

Подробнее читайте в блоге команды разрабочиков Exchange. Там также описано как отправить команде разработчиков свое мнение и замечания.

Транспортные правила Exchange 2010 и оповещения пользователей


Схема:

1. Переход с Exchange 2003 на Exchange 2010: обе версии сосуществуют.

2. Пользователи уже целиком мигрированы на Exchange 2010

3. Два почтовых домена: olddomain.ru и newdomain.ru

4. Из вне почта olddomain.ru приходит на пограничный сервер Exchange 2003, а newdomain.ru на Edge сервер Exchange 2010

Цель: отказ от почтового домена olddomain.ru

Задача: оповестить пользователей, которым присылают письма на старый адрес olddomain.ru, чтобы они предприняли действия по извещению отправителей о новом почтовом адресе.

Почему извещаются именно получатели?

1. Именно они заинтересованы в получении (или не получении писем)

2. Именно они являются авторитетным (законным) источником для отправителей (любой посредник может оказаться злоумышленником!)

3. Отправителем с технической точки зрения может быть список рассылки и только получатель знает (или должен знать) как изменить подписку (самостоятельно или через ответственное лицо)

Проблема: Exchange 2003 не имеет транспортных правил, поэтому на нем невозможно настроить автоматическое оповещение штатными средствами.

Решение: использовать транспортные правила Exchange 2010

Исполнение:

1. Надо поймать нужное письмо

2. Поменять заголовок

3. Вставить в тело письма текст нашего оповещения

Поймать нужное письмо.

Создаем транспортное правило с помощью визарда. Create a Transport Rule На первом шаге визард предлагает ввести имя нового транспортного правила.

Затем нужно составить условие, по которому будет выполнен отбор сообщения для выполнения действия над ним.

clip_image001

Как видите на скриншоте, выбрано условие «when the message header contains specific words». Почему именно это? Как выяснилось три тестировании, Exchange 2003 при получении сообщения на адрес olddomain.ru ищет получателя в Active Directory, затем берет Primary email address, который в нашем случае уже newdomain.ru, и отправляет сообщение уже по этому адресу. Таким образом в организации Exchange сообщение уже не нацелено на адрес olddomain.ru! В результате если в транспортном правиле на Exchange 2010 выбрать условие «when a recipients address contains text patterns» или условие «when a recipients properties contains specific words» и указать olddomain.ru, то правило не сработает!

Тем не менее в служебном заголовке сообщения в заголовке «To» по-прежнему содержится значение olddomain.ru, и мы можем поймать сообщение по условию «when the message header contains specific words», указав в нем заголовок «To» и его значение olddomain.ru

Поменять заголовок

Теперь когда условие создано, на следующем шаге визарда приступим к настройке действий, которые необходимо выполнить над сообщением. Transport Rule Actions

Сначала модифицируем заголовок письма. Для этого выбираем действие «prepend the subject with string» и записываем в него значение «>>> Внимание!!! <<<».

clip_image002

Вставка текста нашего сообщения

Теперь нужно добавить в письмо наше сообщение, которое разъяснит получателю, что ему необходимо сделать и почему. Для этого выбираем действие «append disclaimer text and fallback to action if unable to apply».

Привожу для примера текст сообщения:

<h3>Внимание!</h3> <p></p><p>Это письмо отправлено на старый адрес: <font color=»red» size=4>olddomain.ru</font></p><p> Новый адрес: <font color=»blue» size=4>newdomain.ru</font></p> <p><h3>Оповестите отправителя о вашем новом адресе!</h3></p>

Как видите, можно использовать форматированный текст. Подробнее о настройке Disclaimer можно прочитать в разделе документации Understanding Disclaimers и Configure a Disclaimer. В текст Disclaimer можно вставлять значения атрибутов Active Directory. Это работает для отправителя, но в нашем случае отправитель находится вне AD и размещение %%Email%% в тексте вставляет пустое значение – в нашем случае эта функция оказывается бесполезной и приходится писать в тексте нашего сообщения имя нового домена явным образом как newdomain.ru.

Заключение

Как мы увидели, транспортные правила Exchange 2010 являются мощным и полезным инструментом, с помощью которого можно решать далеко нетривиальные задачи.

Оповещения в Print Management Console


     Есть такой полезный инструмент Print Management Console, который позволяет управлять принтерами, точнее очередями печати. Причем PMC позволяет подключить в консоль несколько серверов и управлять ими централизовано из одного места. И не только управлять серверами и очередями печати: с помощью PMC можно автоматически находить принт-серверы в том же сегменте что и сервер печати, мигрировать очереди печати (в том числе из командной строки), настраивать печать на клиентах через GPO (хотя мне больше нравится использовать GPP: в одном месте можно настроить все очереди печати и указать точные условия кому что устанавливать), управлять версиями драйверов печати.

clip_image001

     Недавно обратил внимание, что консоль не так проста: оказывается с ее помощью можно настроить триггеры, которые срабатывают при изменении статуса сервера или очереди печати. Например, когда очередь печати переходит в состояние «Toner/Ink Low» или «Error».

     Для этого надо перейти в папку Custom Filters и открыть свойства фильтра. Вот пример настройки фильтра и оповещения, когда очередь выходит из состояния «Ready»:

clip_image002

     Список состояний очереди печати стандартный и довольно обширный . Фильтровать можно не только по статусу очереди печати, но и по другим параметрам.

clip_image003

     Письмо об изменении статуса очереди печати (любой на подключенных серверах печати) отправляется на адрес admin@domain.ru через почтовый сервер mailserver.domain.ru и в письме будет строка «Ошибка очереди печати» (точнее надо было написать «Принтер не в состоянии готовности»).

     Как видно на скриншоте, допускается настроить вызов скрипта. В качестве аргументов можно указать свои значения, к которым автоматически будут добавлены имя принтера, имя сервера и имя фильтра (если оповещение настраивается для сервера, то состояние сервера и имя сервера). Это позволяет автоматизировать действия по восстановлению работоспособности системы печати. Например, можно вызвать скрипт перезапуска сервиса печати (Print Spooler), либо отправить на принт-сервер управляющую команду.

Полезные ссылки:

1. Print Management Step-by-Step Guide

Установка программ и обновление корневых сертификатов


При установке на клиентскую машину Java 1.6 система выдала ошибку:

Error 1330.A file that is required cannot be installed because the cabinet file C:\Documents and settings\…\Application Data\Sun\Java\…\Data1.Cab has an invalid digital signature. This may indicate that the cabinet file is corrupt.

Скачал другой дистрибутив. Установка с той же ошибкой. Что за чудо? Открыл свойства Data1.Cab посмотрел подпись: написано – не могу проверить сертификат. Перенес файл на свой компьютер – проверка прошла. Уже легче. Сравнил списки корневых сертификатов на своей машине и на проблемной. На моей машине корневых сертификатов намного больше. С чего бы это?

Когда-то я разбирался с обновлениями корневых сертификатов, что свелось к настройке WSUS и установке обновления KB931125, которое периодически прилетает в новой версии. Сейчас посмотрел внимательнее на это обновление и обнаружил, что счетчик установленных меньше, чем всего компьютеров в сети – обновление ставится не на все компьютеры… Прочитал описание обновления KB931125: оно предназначено только для XP! А за последнее время появились компьютеры на Windows 7, и число их растет. Значит с новыми версиями надо разбираться отдельно.

Тут же была обнаружена статья Technet, которая описывает механизм обновления корневых сертификатов на Vista и Windows 7 Certificate Support and Resulting Internet Communication in Windows Vista.

Существует два способа доставки корневых сертификатов на компьютеры в Active Directory:

1.       Задание политики GPO User Configuration – Windows Settings – Security Settings – Public Key Policies

2.       Автоматическая загрузка корневого сертификата через Интернет с сайта http://www.download.windowsupdate.com

Первый способ позволяет администраторам Active Directory целиком контролировать, каким корневым сертификатам можно доверять. Насколько это нужно? Если ваша компания достаточно крупная и проводит жесткую политику контроля доступа, то скорее всего потребуется жесткий контроль корневых сертификатов. Если компания небольшая и/или не использует сертификаты для управления доступом, цифровых подписей кода и т.п., то этот способ вызовет только лишние траты времени администраторов и раздражение пользователей.

Второй способ гарантирует автоматическую загрузку только проверенных Microsoft корневых сертификатов с сайта http://www.download.windowsupdate.com Это лучшее решение в смысле простоты, минимума затрат и надежности для небольших компаний и компаний не использующих на полную катушку PKI в своем бизнесе. Этот способ фактически аналог установки обновления KB931125 на системы XP. Отличие в том, что обновление устанавливает все доступные корневые сертификаты, а автоматическая загрузка выполняет загрузку только корневого  сертификата, которые необходим для проверки в данный момент.

Чтобы второй способ заработал, достаточно открыть всем клиентам Vista/Windows 7 доступ на сайт http://www.download.windowsupdate.com и запретить политику Turn off Automatic Root Certificates Update.

Все настройки описаны в выше упомянутой статье.

Остается добавить, что после выполнения этих настроек и политик, Lava чудесным образом установилась J

 

Полезные ссылки:

1.       http://support.microsoft.com/kb/931125

2.       http://technet.microsoft.com/en-us/library/cc749331(WS.10).aspx