Unicows dll что это

Обновлено: 03.07.2024

unicows.dll это файл библиотеки динамических ссылок, который является частью разработанный Transparent Language, Inc., Версия программного обеспечения: обычно о по размеру, но версия у вас может отличаться. Файлы DLL - это формат файлов для динамических библиотек, который используется для хранения нескольких кодов и процедур для программ Windows. Файлы DLL были созданы, чтобы позволить нескольким программам использовать их информацию одновременно, тем самым сохраняя память. Это также позволяет пользователю изменять кодировку нескольких приложений одновременно, не изменяя сами приложения. Библиотеки DLL могут быть преобразованы в статические библиотеки с помощью дизассемблирования MSIL или DLL в Lib 3.00. Формат файла .exe файлов аналогичен формату DLL. Файлы DLL, и оба типа файлов содержат код, данные и ресурсы.

Наиболее важные факты о unicows.dll:

Это unicows.dll безопасно или это вирус или вредоносная программа?

Ответ - нет, сам по себе unicows.dll не должен повредить ваш компьютер.

В отличие от исполняемых программ, таких как программы с расширением EXE, файлы DLL не могут быть выполнены напрямую, но должны вызываться другим кодом, который уже выполнен. Тем не менее, DLL имеют тот же формат, что и EXE, и некоторые могут даже использовать расширение .EXE. В то время как большинство динамических библиотек заканчиваются расширением .DLL, другие могут использовать .OCX, .CPL или .DRV.

Файлы DLL полезны, потому что они позволяют программе разделять свои различные компоненты на отдельные модули, которые затем могут быть добавлены или удалены для включения или исключения определенных функций. Если программное обеспечение работает таким образом с библиотеками DLL, программа может использовать меньше памяти, поскольку ей не нужно загружать все одновременно.

С другой стороны, если файл .dll прикреплен к исполняемому файлу, который предназначен для повреждения вашего компьютера, возможно, это опасно. Мы рекомендуем вам запустить сканирование вашей системы с инструмент, подобный этому это может помочь выявить любые проблемы, которые могут существовать.

Вот почему обычно, когда вы видите новый файл .dll на вашем компьютере, где-то будет файл .exe.

Убедитесь, что вы сканируете оба вместе, чтобы вам не пришлось беспокоиться о заражении вашего компьютера чем-то плохим.

Могу ли я удалить или удалить unicows.dll?


Согласно различным источникам онлайн, 3% людей удаляют этот файл, поэтому он может быть безвредным, но рекомендуется проверить надежность этого исполняемого файла самостоятельно, чтобы определить, является ли он безопасным или вирусом.

Программные программы хранят файлы DLL в одной или нескольких папках во время установки. Эти файлы содержат код, который объясняет работу программ.

Если вы планируете удалить unicows.dll, лучше оставить его в покое. Причина этой логики заключается в том, что некоторые программы совместно используют эти файлы, поэтому удаление определенного файла DLL может непреднамеренно вызвать проблемы. Это означает, что удаление unicows.dll может привести к прекращению работы одной или нескольких других программ или только в ограниченной степени.

Некоторые программы также могут устанавливать файлы DLL в несколько папок вне папки Program Files (где установлено большинство программ). Поиск этих DLL-файлов может быть очень трудным, а удаление их может быть опасным.

Как уже упоминалось выше, если вы не уверены, что unicows.dll используется другой программой, мы рекомендуем оставить ее в покое. Однако, если вам нужно удалить файл, мы рекомендуем сначала сделать копию. Если после этого у вас возникнут проблемы с другой программой, требующей использования недавно удаленного DLL-файла, вы можете восстановить файл из резервной копии.


  • Не удалось запустить приложение, так как файл unicows.dll не был найден. Переустановка приложения может решить проблему.
  • unicows.dll не найден
  • отсутствует unicows.dll
  • Обязательная DLL-библиотека unicows.dll не найдена
  • Приложение или unicows.dll не является допустимым образом Windows
  • unicows.dll отсутствует или поврежден
  • Не удается найти unicows.dll
  • Не удается запустить unicows.dll. Отсутствует обязательный компонент: unicows.dll. Пожалуйста, установите unicows.dll снова.

Обновлено ноябрь 2021 г .:

Мы рекомендуем вам попробовать этот новый инструмент. Он исправляет множество компьютерных ошибок, а также защищает от таких вещей, как потеря файлов, вредоносное ПО, сбои оборудования и оптимизирует ваш компьютер для максимальной производительности. Это исправило наш компьютер быстрее, чем делать это вручную:

скачать


(опциональное предложение для Reimage - Cайт | Лицензионное соглашение | Политика конфиденциальности | Удалить)

Если unicows.dll отсутствует или поврежден, это может повлиять на многие приложения, включая операционную систему, что может помешать вам выполнять свою работу или использовать критические функции в критически важных программах.

Запустить SFC

SFC для поврежденной DLL

Самый безопасный способ восстановить отсутствующий или поврежденный файл unicows.dll, вызванный вашей операционной системой Windows, - запустить встроенную проверку системных файлов, которая заменяет отсутствующие или поврежденные системные файлы.

Для этого щелкните правой кнопкой мыши кнопку «Пуск» на компьютере Windows 10, чтобы открыть меню WinX, и щелкните ссылку «Командная строка (администратор)».

В окне CMD скопируйте следующую команду и нажмите Enter:

Сканирование может занять 10 минут, и если оно успешно завершено, вы должны перезагрузить компьютер. Запуск sfc / scannow в безопасном режиме или при запуске может дать лучшие результаты.

Обновить драйверы

Обновление-драйверы

Иногда при использовании аппаратного обеспечения, такого как принтер, вы получите отсутствующую ошибку файла unicows.dll. Эта ошибка может быть связана с более старой версией драйвера, который не совместим с обновленным файлом .dll, поэтому принтер ищет неправильный файл .dll и не может его найти.

Обновите драйверы вашего устройства, чтобы увидеть, решит ли это проблему.

Восстановление при загрузке

инструмент для восстановления при запуске

Восстановление при загрузке - это еще один способ восстановить все файлы .dll, такие как unicows.dll, до их первоначального рабочего состояния. Однако это исправление может вызвать проблемы в других программах, особенно если программа обновила файлы DLL.

заменить отсутствующие файлы DLL

В большинстве учебников и руководств авторы предупреждают своих читателей, чтобы они не загружали отсутствующие файлы unicows.dll со случайных и непригодных для использования веб-сайтов, которые могут предоставить им вредоносное ПО. Это не без причины, конечно. Правда состоит в том, что в Интернете полно сайтов, которые обещают пользователям решить их проблемы, открывая определенные приложения или программы как можно скорее. К сожалению, очень немногие могут действительно оправдать ваши ожидания.

Хотя эта проблема встречается реже, потенциально гораздо более серьезная проблема заключается в том, что библиотеки DLL, которые вы загружаете из источников, отличных от поставщика, иногда могут быть загружены вирусами или другими вредоносными программами, которые могут заразить ваш компьютер. Это особенно верно для веб-сайтов, которые не слишком заботятся о том, откуда берутся их файлы. И это не так, как будто эти сайты сделают что-нибудь, чтобы рассказать вам о своих источниках высокого риска.

Файлы DLL, такие как UNICOWS.DLL, классифицируются как файлы Win32 DLL (Исполняемое приложение). Как файл Microsoft Layer for Unicode on Win9x Systems (MSLU) он был создан для использования в Microsoft (R) Windows (R) 95, Windows (R) 98, and Windows (R) Millennium Operating Systems от компании ArcSoft.

Продолжайте читать, чтобы найти загрузку правильной версии файла UNICOWS.DLL (бесплатно), подробные сведения о файле и порядок устранения неполадок, возникших с файлом DLL.




Совместимость с Windows 10, 8, 7, Vista, XP и 2000

Средняя оценка пользователей

Сведения о разработчике и ПО
Разработчик ПО: Microsoft Corporation
Программа: Microsoft (R) Windows (R) 95, Windows (R) 98, and Windows (R) Millennium Operating Systems
Авторское право: © Microsoft Corporation. All rights reserved.
Сведения о файле
Набор символов: Unicode
Код языка: Neutral
Флаги файлов: (none)
Маска флагов файлов: 0x003f
Точка входа: 0xe153
Размер кода: 221184
Информация о файле Описание
Размер файла: 240 kB
Дата и время изменения файла: 2020:03:06 15:46:36+00:00
Тип файла: Win32 DLL
Тип MIME: application/octet-stream
Тип компьютера: Intel 386 or later, and compatibles
Метка времени: 2003:04:21 18:53:20+00:00
Тип PE: PE32
Версия компоновщика: 8.0
Размер кода: 221184
Размер инициализированных данных: 18944
Размер неинициализированных данных: 0
Точка входа: 0xe153
Версия ОС: 6.0
Версия образа: 6.0
Версия подсистемы: 4.0
Подсистема: Windows command line
Номер версии файла: 1.0.4018.0
Номер версии продукта: 1.0.4018.0
Маска флагов файлов: 0x003f
Флаги файлов: (none)
Файловая ОС: Windows NT 32-bit
Тип объектного файла: Executable application
Подтип файла: 0
Код языка: Neutral
Набор символов: Unicode
Наименование компании: Microsoft Corporation
Описание файла: Microsoft Layer for Unicode on Win9x Systems (MSLU)
Версия файла: 1.0.4018.0
Внутреннее имя: Godot.dll
Авторское право: © Microsoft Corporation. All rights reserved.
Название продукта: Microsoft (R) Windows (R) 95, Windows (R) 98, and Windows (R) Millennium Operating Systems
Версия продукта: 1.0.4018.0

✻ Фрагменты данных файлов предоставлены участником Exiftool (Phil Harvey) и распространяются под лицензией Perl Artistic.

Ошибки библиотеки динамической компоновки UNICOWS.DLL

Файл UNICOWS.DLL считается разновидностью DLL-файла. DLL-файлы, такие как UNICOWS.DLL, по сути являются справочником, хранящим информацию и инструкции для исполняемых файлов (EXE-файлов), например Setup.exe. Данные файлы были созданы для того, чтобы различные программы (например, ArcSoft PhotoStudio) имели общий доступ к файлу UNICOWS.DLL для более эффективного распределения памяти, что в свою очередь способствует повышению быстродействия компьютера.

  • Нарушение прав доступа по адресу — UNICOWS.DLL.
  • Не удается найти UNICOWS.DLL.
  • Не удается найти C:\Program Files (x86)\ArcSoft\PhotoStudio 6\UNICOWS.DLL.
  • Не удается зарегистрировать UNICOWS.DLL.
  • Не удается запустить ArcSoft PhotoStudio. Отсутствует требуемый компонент: UNICOWS.DLL. Повторите установку ArcSoft PhotoStudio.
  • Не удалось загрузить UNICOWS.DLL.
  • Не удалось запустить приложение, потому что не найден UNICOWS.DLL.
  • Файл UNICOWS.DLL отсутствует или поврежден.
  • Не удалось запустить это приложение, потому что не найден UNICOWS.DLL. Попробуйте переустановить программу, чтобы устранить эту проблему.

Файл UNICOWS.DLL может отсутствовать из-за случайного удаления, быть удаленным другой программой как общий файл (общий с ArcSoft PhotoStudio) или быть удаленным в результате заражения вредоносным программным обеспечением. Кроме того, повреждение файла UNICOWS.DLL может быть вызвано отключением питания при загрузке ArcSoft PhotoStudio, сбоем системы при загрузке UNICOWS.DLL, наличием плохих секторов на запоминающем устройстве (обычно это основной жесткий диск) или, как нередко бывает, заражением вредоносным программным обеспечением. Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.


Шаг 1. Восстановите компьютер до последней точки восстановления, «моментального снимка» или образа резервной копии, которые предшествуют появлению ошибки.

Чтобы начать восстановление системы (Windows XP, Vista, 7, 8 и 10):

Если на этапе 1 не удается устранить ошибку UNICOWS.DLL, перейдите к шагу 2 ниже.


Шаг 2. Если вы недавно установили приложение ArcSoft PhotoStudio (или схожее программное обеспечение), удалите его, затем попробуйте переустановить ArcSoft PhotoStudio.

Чтобы удалить программное обеспечение ArcSoft PhotoStudio, выполните следующие инструкции (Windows XP, Vista, 7, 8 и 10):

После полного удаления приложения следует перезагрузить ПК и заново установить ArcSoft PhotoStudio.

Если на этапе 2 также не удается устранить ошибку UNICOWS.DLL, перейдите к шагу 3 ниже.


ArcSoft PhotoStudio 6.0.172.1

Шаг 3. Выполните обновление Windows.


Если ни один из предыдущих трех шагов по устранению неполадок не разрешил проблему, можно попробовать более агрессивный подход (примечание: не рекомендуется пользователям ПК начального уровня), загрузив и заменив соответствующую версию файла UNICOWS.DLL. Мы храним полную базу данных файлов UNICOWS.DLL со 100%-ной гарантией отсутствия вредоносного программного обеспечения для любой применимой версии ArcSoft PhotoStudio . Чтобы загрузить и правильно заменить файл, выполните следующие действия:

Windows 10: C:\Program Files (x86)\Corel\PhotoImpact X3\
Windows 10: C:\Program Files\Sega\SONICHEROES TRIAL\
Windows 10: C:\Users\Tester\AppData\Local\Temp\SONICHEROES TRIAL\
Windows 10: C:\Program Files (x86)\ExtractNow\
Windows 10: C:\Program Files (x86)\Microsoft Office\PowerPoint Viewer\
Показать на 10 каталогов больше + Windows 10: C:\Program Files (x86)\Java\jdk1.5.0_22\jre\bin\
Windows 10: C:\Program Files (x86)\Java\jre1.5.0_22\bin\
Windows 10: C:\Program Files (x86)\TrackMania Nations ESWC\
Windows 10: C:\Windows\SysWOW64\
Windows 10: C:\Program Files (x86)\ArcSoft\PhotoStudio 6\
Windows 10: C:\Program Files (x86)\Radmin Viewer 3\
Windows 10: C:\OpenOfficePortable\App\openoffice\URE\bin\
Windows 10: C:\Program Files (x86)\MixMeister BPM Analyzer\
Windows 10: C:\Program Files (x86)\New Star Soccer 3\
Windows XP: C:\Program Files\Microsoft Office\OFFICE11\

Если этот последний шаг оказался безрезультативным и ошибка по-прежнему не устранена, единственно возможным вариантом остается выполнение чистой установки Windows 10.

Пользователи часто недоумевают, потому что программы, которые только недавно работали, не запускаются. Например, были запущены Photoshop и Skype, но теперь появляется ошибка "Программа не запускается, потому что unicows.dll отсутствует на вашем компьютере.

Что мне делать? Как мне ее вернуть? Как и где скачать unicows.dll и куда ее положить? Ответы на все ваши вопросы здесь!

Что такое unicows.dll?

"Unicows.dll пропущена" - это достаточно стандартная ошибка на Windows PC. Чаще всего проблема заключается в установке обновления Windows и неудачной установке некоторой программы.:

A .dll файл (Dynamic Link Library) функционирует, когда конкретной программе нужен этот .dll файл. Если он поврежден/пропущен, пользователи видят, например, ошибку unicows.dll, которая приводит к аварийному завершению работы. Стоит добавить, что unicows.dll - это файл, используемый в дистрибутиве Visual C++ Redistributable для Visual Studio 2015.:

При появлении уведомления о пропущенном файле пользователи начинают поиск загрузки unicows.dll. Лучше делать это в проверенном месте, например на сайте DLL Kit, где нет ни угроз, ни вирусов.:

Самые распространенные ошибки с unicows.dll файлом на Windows

  • :Файл Dll удален/поврежден. Основная причина - удален или поврежден важный для приложения .dll файл. Вам необходимо восстановить файл или скачать его еще раз.
  • Ошибка в облаке Adobe. Проблема вызвана поломкой Visual C ++.
  • Файлы Visual Studio 2015 повреждены/пропущены. Файл .dll отсутствует на компьютере или поврежден приложением/системой/вирусом.
  • Система ПК заражена вирусами. Вредоносные программы и вирусы всегда повреждают файл unicows.dll.
  • В нем повреждены системные файлы. Ошибки и повреждения возникают после некорректной перезагрузки Windows и работы с зараженными программами и приложениями.

Другие распространенные Unicows.dll ошибки включают:

  • “Unicows.dll пропущена“
  • “Unicows.dll ошибка загрузки“
  • “Unicows.dll крах“
  • “Unicows.dll не найдена“
  • “Unicows.dll не удалось обнаружить“
  • “Unicows.dll Нарушение Доступа“
  • “Точка входа в процедуру Unicows.dll error“
  • “Не получается найти Unicows.dll“
  • “Не могу зарегистрировать Unicows.dll“

метод 1: Загрузить unicows.dll автоматически

Не знаете, какая версия unicows.dll вам нужна? Не волнуйтесь; используйте автоматический метод для решения проблемы или просто прочитайте статью ниже.

Для этого метода скачайте unicows.dll по нашей ссылке и используйте командную строку, чтобы зарегистрировать отсутствующую unicows.dll:

  • Одновременно нажмите клавиши Windows и R на клавиатуре - появится окно Run - введите cmd - нажмите Ctrl+Shift+Enter - перед вами появится командная строка с правами администратора.
  • Когда появится запрос, необходимо разрешить командной строке вносить изменения, поэтому нажмите Yes.
  • Теперь удалите файл реестра (введите или скопируйте команду regsvr32 /u unicows.dll, а затем нажмите Enter).
  • Теперь зарегистрируйте файл: введите команду regsvr32 unicows.dll и нажмите Enter.
  • Закрыть командную строку и запустить приложение.

UNICOWS.DLL ВЕРСИИ

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
1.1.3790.0 32bit 0.24 MB MD5 SHA1

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
1.0.3703.0 32bit 0.24 MB MD5 SHA1

дата выпуска: February 28, 2021

Версия / биты Язык Размер MD5 / SHA-1
1.0.3665.0 32bit 0.23 MB MD5 SHA1

Какая версия unicows.dll правильная?

Посмотрите на описания в таблице, где можно выбрать нужный файл. Существуют версии для 64-битной или 32-битной Windows и используемые в них языки. Выберите те dll-файлы, язык которых идентичен языку самой программы. Загрузите последние версии dll-файлов для своей программы.

Where should you place unicows.dll?

Ошибка "unicows.dll пропущена" будет исправлена, если переместить файл в папку установки приложения или игры. Также можно переместить unicows.dll в системный каталог Windows.

Если этот метод не помогает, используйте следующий.

метод 3: Переустановить Visual C++ Redistributable for Visual Studio 2015

Мы рекомендуем переустановить переустановку дистрибутива Visual C++ для Visual Studio 2015. Пожалуйста, придерживайтесь рекомендаций Microsoft по правильной установке отсутствующих файлов.

Рекомендуется скачать программу с официального сайта Microsoft:

  • Вам необходимо скачать Microsoft Visual C++ Redistributable с официального сайта Microsoft.
  • Выберите файл для вашей версии Windows: vc_redist.x64.exe для 64-битной версии или vc_redist.x86.exe для 32-битной операционной системы. Установите флажок рядом с файлом и нажмите кнопку Next.
  • Открыть файл - прочитать условия лицензирования программного обеспечения Майкрософт - согласиться - выбрать пункт Установить.

Если этот метод не помогает, используйте следующий.

Список некоторых исполняемых файлов библиотеки Visual C++

  • mfc140u.dll
  • mfcm140.dll
  • mfcm140u.dll
  • mfc140chs.dll
  • mfc140cht.dll
  • ucrtbase.dll
  • vcruntime140.dll
  • msvcp140.dll
  • concrt140.dll
  • vccorlib140.dll
  • vcamp140.dll

Вот некоторые решения по исправлению ошибки "unicows.dll is Missing". Пожалуйста, прочитайте все инструкции и следуйте им, чтобы успешно добавить конкретную версию файла .dll в Windows для восстановления unicows.dll проблемы.

метод 4: Запустить SFC сканирование (System File Checker)

Проверка системных файлов (SFC scan) - инструмент, доступный в Windows. Устройство считается самым быстрым способом автоматического исправления поврежденных системных файлов. Для запуска необходимо запустить его:

Если этот метод не помогает, используйте следующий.

метод 5: Обновить Windows до последней версии

Даже простое обновление Windows может помочь решить эту проблему. Обновляя операционную систему до последней версии, все ошибки unicows.dll могут исчезнуть:

  • Открыть настройки из меню Пуск или с помощью комбинации клавиш Windows+I.
  • Перейти к обновлению и безопасности.
  • В закладке Windows Update нажмите Check for updates.
  • Новое обновление найдено - Установить сейчас.

Если этот метод не помогает, используйте следующий.

метод 6: Переустановить нужное приложение

Когда ни один из методов не может помочь, окончательным решением может быть переустановка приложения после его полной деинсталляции:

Unicode и Windows9x/Me

Однажды, в пятницу вечером, я получил письмо, из которого следовало, что заказчик очень хочет, чтобы проект, над которым я работаю, мог бы быть запущен из Windows98.

"А, может, Вам еще и поддержку Microsoft ® Windows ™ версии 2.0 подавай?", - подумал я, но, тем не менее, решил попытаться. Первое, что пришло мне на ум, это просто перекомпилировать все 30 модулей, из которых состоит проект, без директивы препроцессора _UNICODE . Идея здравая, но пришла в мою голову с опозданием месяцев в 6. К сожалению, некоторые из разработчиков, участвовавших в этом проекте, не понимают, как выяснилось, разницу между LPCTSTR и LPCWSTR . Некоторые даже умудрились использовать LPCTSTR при описании интерфейсов! Представляете, что получится, если код, реализующий некий интерфейс, трактует строки как двухбайтовые, а код, пользующийся этим интерфейсом, считает их однобайтовыми? Дело сильно осложнилось наличием нескольких библиотек, исходным кодом которых я не располагал, и, как следствие, не мог их пересобрать. Возможно, что если бы я располагал двумя-тремя неделями, я бы расставил по коду бесконечное количество перекладываний из пустого в порожнее и наоборот, но, увы. Времени у меня было в обрез, и я начал искать другой путь. Настало время разобраться с давным-давно вышедшей библиотекой поддержки уникода для Windows9x/Me.

Библиотека Unicows

Идея, реализованная в этой библиотеке, довольно проста: весь API, рассчитанный на двухбайтовые строки, эмулируется специальными заглушками, преобразующими все строковые параметры из двухбайтовых в однобайтовые, затем вызывается реализованная в Windows9x/Me неуникодная функция, а результат снова перекладывается в двухбайтовые строки. Именно таким образом в WindowsNT реализована поддержка "старого", неуникодного API. В этой системе однобайтовые строки превращаются в двухбайтовые, вызывается соответствующая функция, а результат снова урезают до однобайтовых строк. Странно, что подобный механизм не был встроен в Windows9x/Me изначально. Unicows.dll занимает всего 200k и реализует почти 500 заглушек для работы с двухбайтовыми строками. Давайте попробуем эту замечательную библиотеку.

Первая программа с использованием unicows

Сначала создадим простой ATL проект и добавим в него ActiveX контрол. Теперь добавим поддержку уникода для Windows9x/Me. Процедура "прикручивания" unicows довольно сложная и интуитивно-непонятная. Но сводится она к тому, чтобы добавить Unicows.lib к списку прочих библиотек, причем непременно в самое начало:

Плюс нужно добавить вот такую строку куда-нибудь в StdAfx.cpp:

Компилируем, запускаем и. не работает! А как же! Я ведь совершенно забыл, что сначала нужно скопировать unicows.dll в системный каталог Windows. Инсталлируем unicows, запускаем. работает! Но, к сожалению, только Debug-версия. Release-версия никак не может создать окно для контрола. Небольшое расследование показало, что в этом виноват макрос _ATL_DLL , из-за которого CWindowImpl::Create вызывает функцию AtlModuleRegisterWndClassInfoW из ATL.DLL, а та, в свою очередь, обращается напрямую к RegisterClassExW из USER32.DLL. Вызов не попадает в unicows, потому что ATL.DLL ничего про нее не знает. Unicows подменяет вызовы только в тех модулях, в сборке которых участвовала unicows.lib

ПРИМЕЧАНИЕ

Майкрософт рекомендует устанавливать unicows.dll не в системный каталог windows, а в "C:\Program Files\Common Files\Microsoft Shared\MSLU\"

Проблема решается простым отключением _ATL_DLL . Это будет стоить всего лишь в 10к, на которые "подрастет" наш модуль. Если Вас не пугает необходимость статически линковать все необходимые библиотеки (типа MFC), можете дальше не читать. Впрочем, у Вас есть хорошая возможность расширить немного свой кругозор.

Как устроена unicows

Возникает вполне уместный вопрос: "А каким образом это все устроено"? Очень просто. Хитрые манипуляции с unicows.lib необходимы для того, чтобы подменить уникодные функции из модулей kernel32, advapi32, user32, gdi32, shell32, comdlg32, version, mpr, rasapi32, winmm, winspool, vfw32, secur32, oleacc, oledlg и sensapi на функции с аналогичными именами из unicows. А все функции из unicows.lib выглядят примерно так:

Пусть Вас не пугает странное название этой функции. В .def файле она переименовывается просто в RegisterClassExW , который и находит линковщик.

  • Первые два параметра этой функции – это имя модуля и имя функции, которую подменяет эта заглушка.
  • Третий параметр – указатель на функцию, куда будет помещен либо адрес настоящей функции из USER32, если наша программа выполняется в уникодной версии Windows, либо четвертый или пятый параметр, передаваемый в ResolveThunk.
  • Четвертый параметр – указатель на функцию, эмулирующую RegisterClassExW для неуникодной версии Windows. Код этой функции живет в unicows.dll, но может быть заменен на наш собственный. Для этого в нашей программе необходимо определить вот такую функцию:

Тогда линковщик, найдя две разных функции, но с одинаковыми именами, отдаст предпочтение той, что находится в нашей программе.

  • Последний параметр задает указатель на функцию, используемую в том случае, если попытка загрузить unicows.dll не увенчалась успехом. Она просто вызывает ::SetLastError(ERROR_CALL_NOT_IMPLEMENTED). Т.е. ведет себя точно так же, как и "родные" заглушки из Windows9x/Me.

До вызова ResolveThunk, значение RegisterClassExW совпадает с user32_RegisterClassExW_Thunk, а внутри этого вызова происходит изменение этого указателя на функцию из USER32, для WindowsNT/2k/XP, либо на Unicows_RegisterClassExW, для Windows9x/Me с установленной unicows.dll, либо на GodotFailRegisterClassExW, для Windows9x/Me без unicows.dll. В любом случае, user32_RegisterClassExW_Thunk уж е не будет никогда вызываться. Первый и последний вызов user32_RegisterClassExW_Thunk был осуществлен через указатель на эту функцию – RegisterClassExW, и значение по этому адресу было исправлено посредством вызова ResolveThunk.

Интересно, что в случае WindowsNT/2k/XP загрузки unicows.dll в память не происходит. ResolveThunk и функции-заглушки находятся в нашей программе. Фактически, осуществляется отложенное связывание функций. Это означает, что никакой лишней работы в случае с уникодной версией Windows не будет. Unicows работает "прозрачно" в этих ОС. В Windows9x/Me имеет место небольшая задержка для инициализации unicows, не заметная, впрочем, на фоне общей "задумчивости" этих ОС.

Альтернативное использование unicows

Проблема запаздывания

Подобная, но, к счастью, разрешимая проблема имеется и для EXE приложений. Дело в том, что выполнение программы начинается не с WinMain, а с некоторой функции, инициализирующей CRT, а затем уже вызывающей WinMain. Подробнее здесь. Все, что нам нужно, это задать свою точку входа в программу:

и написать эту самую _UnicowsEntry:

Проблема отложенной загрузки

Отложенная загрузка (подробнее) означает, что некоторые функции не присутствуют в таблице импорта, а связываются с нужными модулями по мере необходимости. Этот механизм очень похож на тот, который реализуют заглушки unicows.

Как таковой, проблемы не возникает. Все, что нам нужно – это доработать маленько наши функции и заодно подменить ::GetProcAddress() на нашу собственную функцию, а там мы сначала поищем в unicows.dll, а если не найдем нужной функции, то отправим вызов в настоящую ::GetProcAddress().

Проблемные API

Некоторые функции не имеют заглушек для уникодной версии в Windows9x/Me. Такими функциям, например, являются ::GetAltTabInfo() и ::RealGetWindowClass() . USER32.DLL из WindowsNT/2k/XP экспортирует по три функции для каждой из них, например, GetAltTabInfo, GetAltTabInfoA и GetAltTabInfoW. В USER32.DLL из Windows98 есть только GetAltTabInfo. USER32.DLL из Windows95 не имеет такой функции вообще. Интересно, что в WinUser.h определены именно GetAltTabInfoA и GetAltTabInfoW, таким образом, даже если ваше приложение скомпилировано без поддержки уникода, Windows9x все равно не сможет его загрузить. Тем не менее, эти функции есть в unicows.dll, и, если воспользоваться стандартным способом подключения unicows, приложение будет работать. Для альтернативного способа нам придется воспользоваться явным (GetProcAddress) или отложенным (delayload) связыванием. Оба пути приведут нас, в конце концов, в unicows.dll, где имеются уникодные версии этих функций.

С Module32First/Module32Next , Process32First/Process32Next из KERNEL32.DLL похожая ситуация. В WindowsNT/2k/XP есть Module32First и Module32FirstW, в Widows98 только Module32First. В Unicows.dll Module32FirstW также отсутствует. Для этих функций, впрочем, можно легко отказаться от уникода. Для этого можно просто отменить макрос UNICODE перед включением TlHelp32.h, а затем включить его обратно.

Заключение

На прощание хочу обратить Ваше внимание на тот факт, что unicows не обеспечивает настоящей поддержки уникода под Windows9x/Me, Вам не удастся вывести одновременно японские и русские буквы, как в WindowsNT/2k/XP, но позволяет не компилировать и отлаживать две версии одной программы: с уникодом и без. В любом случае, если вам нужны одновременно и китайские и арабские буквы, обойтись без WindowsNT/2k/XP не получится.

Читайте также: