К вопросу запуска 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 являются мощным и полезным инструментом, с помощью которого можно решать далеко нетривиальные задачи.