{0>Application Specification for Microsoft® Windows® 2000 <}100{>Спецификация приложений для Microsoft® Windows® 2000 <0}

{0>for desktop applications<}100{>для настольных приложений<0}


 

{0>Design Guide for Building <}100{>Руководство по разработке<0}

{0>Business Applications <}100{>бизнес-приложений<0}

 

 

 

 

 

 

{0>Microsoft Corporation<}0{>Корпорация Microsoft<0}


{0>This document is provided for informational purposes only and Microsoft makes no warranties, either express or implied, in this document.<}0{>Данный документ носит информативный характер, и корпорация Microsoft не дает никаких явных или подразумеваемых гарантий относительно данного документа.<0} {0>Information in this document is subject to change without notice.<}0{>Корпорация Microsoft оставляет за собой право в любое время вносить изменения в данный документ, не уведомляя об этом отдельные лица или организации.<0} {0>The entire risk of the use or the results of the use of this document remains with the user.<}0{>Вся ответственность за результаты использования данного документа ложится на пользователя.<0}

{0>The names of companies, products, people, characters, and/or data mentioned herein are fictitious and are in no way intended to represent any real individual, company, product, or event, unless otherwise noted.<}0{>Названия компаний, продуктов, имена людей, и данные, используемые в данном документе, являются вымышленными, и любое совпадение с отдельными людьми, названиями компаний, продуктов, или событиями является случайным.<0}

{0>Complying with all applicable copyright laws is the responsibility of the user.<}0{>Ответственность за соответствие всем законами об авторских правах ложится на пользователя данного документа.<0}

{0>Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document.<}0{>У корпорации Microsoft могут быть патенты, заявки на патенты, торговые марки, авторские права и другие права интеллектуальной собственности на предмет данного документа.<0} {0>Except as expressly provided in a written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property.<}0{>За исключением пунктов, четко оговоренных в лицензионном соглашении корпорации Microsoft, наличие данного документа не дает Вам лицензии на эти патенты, торговые марки, авторские права или на другую интеллектуальную собственность.<0}

Active Accessibility, Active Desktop, Active Directory, IntelliMirror, Microsoft, Microsoft Press, MSDN, Outlook, Windows, логотип Windows, Win32, Win64 и Windows NT являются зарегистрированными торговыми марками или торговыми марками корпорации Microsoft в Соединенных Штатах и/или других странах.<0}

{0>Other product and company names mentioned herein may be the trademarks of their respective owners.<}0{>Названия других продуктов и компаний, упомянутых в данном документе, могут являться торговыми марками соответствующих владельцев.<0}

 

{0>© 1998-1999 Microsoft Corporation.<}0{>© 1998-1999 Корпорация Microsoft.<0} {0>All rights reserved.<}0{>Все права защищены.<0}

 


{0>Acknowledgments<}0{>Слова благодарности<0}

{0>Microsoft wishes to thank the following organizations for their technical review, feedback, and consideration in the drafting of this specification.<}0{>Корпорация Microsoft выражает благодарность следующим организациям за технические консультации, отзывы и поддержку при создании данной спецификации.<0} {0>Their feedback was invaluable to help guide the content of this specification to better meet the needs of enterprise customers.<}0{>Они оказали неоценимую помощь в создании спецификации, наилучшим образом отвечающей требованиям корпоративных клиентов.<0}

 

American International Group, Inc.

Carnegie Mellon University

Charles Schwab & Co., Inc.

CIGNA

Credit Suisse First Boston

Ford Motor Company

Nortel Networks

Pfizer, Inc.

Университет штата Техас, г. Остин – Высшая школа бизнеса

Warburg Dillon Read

 

 



Введение{0>Welcome<}0{> <0}

{0>The Application Specification for Windows 2000 was developed by Microsoft in cooperation with customers and 3rd party developers to identify the technical definition of the model business application for Windows 2000. This specification will help software developers take advantage of the new technologies in Windows 2000 so that your application is more manageable, more reliable, and reduces cost of ownership for your customers.<}0{>Спецификация приложений для Windows 2000 была создана корпорацией Microsoft совместно с заказчиками и независимыми разработчиками для определения технической модели бизнес-приложения для Windows 2000. Данная спецификация поможет разработчикам программного обеспечения использовать новые технологии Windows 2000 для повышения управляемости и надежности приложения и позволит сократить расходы заказчиков.<0} {0>It is intended for developers of all kinds, including independent software vendors and corporate application developers. The specification has two versions.<}0{>Она предназначается для всех разработчиков, включая независимых поставщиков программного обеспечения и разработчиков корпоративных приложений. Имеется две версии спецификации.<0} {0>This document details the requirements for desktop applications.<}0{>В этом документе подробно описаны требования к настольным приложениям.<0} {0>There is a similar specification for building distributed, multi-tier applications, available at http://msdn.microsoft.com/winlogo.<}0{>Данная спецификация аналогична спецификации по созданию распределенных многопользовательских приложений, расположенной по адресу http://msdn.microsoft.com/winlogo.<0}

{0>Top reasons your customers will benefit<}0{>Основные преимущества для пользователя<0}

{0>An application that meets this specification…<}0{>Приложение, которое соответствует данной спецификации…<0}

·         {0>Provides a robust, self-repairing installation that helps minimize conflicts among shared components (i.e. «DLL Hell») to enable better co-existence of applications.<}0{>Обеспечивает надежную, самовосстанавливающуюся установку, которая помогает минимизировать число конфликтов, возникающих между совместно используемыми компонентами (называемых «DLL Hell») для обеспечения наилучшего сосуществования приложений.<0}

·         {0>Facilitates easier software deployment and management for organizations.<}0{>Обеспечивает возможность легкой установки и управления программным обеспечением для организаций.<0}

·         {0>Correctly maintains user preferences and computer settings to ensure a good «roaming user» experience, support for multiple users per machine, and regeneration of application settings in machine replacement scenarios.<}0{>Корректно поддерживает пользовательские настройки и настройки компьютера, обеспечивая корректную поддержку «роуминга» пользователей, поддержку нескольких пользователей на одной машине и восстановление настроек приложения в сценариях замены компьютера.<0}

·         {0>Runs in a tightly controlled network environment, to enable network administrators to secure and control corporate desktops.<}0{>Работает в строго контролируемом сетевом окружении, чтобы сетевые администраторы могли обеспечивать безопасность и контролировать корпоративные рабочие места.<0}

·         {0>Supports OnNow power management for a better mobile computing experience.<}0{>Поддерживает систему управления OnNow для улучшения поддержки мобильных пользователей.<0}

·         {0>Provides a consistent user experience and supports accessibility standards to reduce support and training costs.<}0{>Предоставляет пользователям знакомую среду работы и поддерживает стандарты доступности, что снижает затраты на поддержку и обучение.<0}

·         {0>Provides a smooth transition of the application for users that upgrade from a previous version of Windows to Windows 2000 Professional.<}0{>Обеспечивает беспрепятственную работу приложения при замене предыдущей версии Windows на Windows 2000 Professional.<0}

{0>Your customers will get the greatest benefits when running your application on Windows 2000 Professional.<}0{>Клиенты получат максимальные преимущества при работе с приложением на платформе Windows 2000 Professional.<0} {0>The same application can also run on down-level operating systems (e.g. Windows NT Workstation 4.0, Windows 98, and Windows 95).<}0{>Эти приложения могут работать и в операционных системах более ранних версий (например, Windows NT Workstation 4.0, Windows 98 и Windows 95).<0} {0>Many of these benefits will also accrue to customers running your application on down-level operating systems.<}0{>Пользователи, работающие с Вашим приложением в операционных системах более ранних версий, также смогут воспользоваться многими его преимуществами.<0}

{0>Certified for Windows <}0{>Certified for Windows <0}

{0>The Application Specification for Windows 2000 defines the technical requirements for applications to earn the «Certified for Microsoft Windows» logo.<}0{>В Спецификации приложений для Windows 2000 определены технические требования к приложениям для получения логотипа «Certified for Microsoft Windows».<0} {0>Applications may carry the «Certified for Microsoft Windows» logo, once they have passed compliance testing and have executed a logo license agreement with Microsoft.<}0{>Приложения могут использовать логотип «Certified for Microsoft Windows» только после прохождения проверки на соответствие и заключения лицензионного соглашения о логотипе с корпорацией Microsoft.<0} {0>This logo lets your customers know that your application offers a high quality computing experience available on Windows.<}0{>Логотип указывает на то, что приложение использует высококачественные технологии, имеющиеся в Windows.<0} 

{0>Windows Certification is available for any of the following operating systems*:<}0{>Сертификация Windows доступна для всех следующих операционных систем*:<0}


·         {0>Windows 2000 Professional<}0{>Windows 2000 Professional<0}

·         {0>Windows 2000 Server<}0{>Сервер Windows 2000<0}

·         {0>Windows 2000 Advanced Server<}0{>Расширенный сервер Windows 2000<0}

·         {0>Windows NT Workstation version 4.0<}0{>Рабочая станция Windows NT версия 4.0<0}

·         {0>Windows 98<}0{>Windows 98<0}

·         {0>Windows 95<}0{>Windows 95<0}

{0>* Windows 2000 DataCenter Server will be incorporated into the Certified for Windows program at a later date.<}0{>* Сервер Windows 2000 DataCenter будет включен в программу сертификации для Windows позже.<0}


{0>You may choose any combination of platforms, provided that at least one of the Windows 2000 operating systems is included.<}0{>Вы можете выбрать любую комбинацию платформ при условии, что включена хотя бы одна операционная система Windows 2000.<0}

 {0>The logo you receive will indicate the version(s) of Windows for which your product is certified.<}0{>В полученном Вами логотипе будут указаны версии Windows, для которых сертифицирован продукт.<0} {0>The checklist on the next page shows which parts of the specification are required for Certification on each platform.<}0{>На следующей странице представлен список необходимых для сертификации компонентов спецификации для каждой платформы.<0}

{0>Two sample logos are shown below.<}0{>Ниже представлены два примера логотипа.<0}

{0>Compliance testing for the Windows Certification program is performed by VeriTest, an independent testing lab.<}0{>Проверка соответствия для программы Сертификации Windows выполняется независимой тестовой лабораторией VeriTest.<0}{0>Compliance testing will be done using the latest released versions of the operating systems, which currently are:<}0{> Тестирование выполняется с использованием последних версий операционных систем; в настоящее время это:<0}

·         {0>Windows 2000 operating systems, Beta 3<}0{>Операционные системы Windows 2000, бета-версия 3<0}

·         {0>Windows NT Workstation 4, with Service Pack 5 and Internet Explorer 5<}0{>Рабочая станция 4 Windows NT с Пакетом обновления 5 и Internet Explorer 5<0}

·         {0>Windows 98 Second Edition<}0{>Windows 98 Second Edition<0}

·         {0>Windows 95 OSR2 with Internet Explorer 5<}0{>Windows 95 OSR2 с Internet Explorer 5<0}

{0>For additional information on how to test for the «Certified for Windows» logo, see http://msdn.microsoft.com/winlogo.<}0{>Дополнительную информацию о тестировании для получения логотипа «Certified for Windows» можно получить по адресу: http://msdn.microsoft.com/winlogo.<0}

 

{0>References<}0{>Справочная информация<0}

{0>Resource<}0{>Ресурс<0}

{0>Address<}0{>Адрес<0}

{0>Application Specification for Windows 2000<}0{>Спецификация приложений для Windows 2000<0}

   {0>for Distributed applications<}0{>для распределенных приложений<0}

{0>http://msdn.microsoft.com/winlogo/<}0{>http://msdn.microsoft.com/winlogo/<0}

{0>Technical feedback on this specification<}0{>Технические отзывы о спецификации<0}

{0>LogoTalk@microsoft.com<}0{>LogoTalk@microsoft.com<0}

{0>«Certified for Windows» Logo Program <}0{>Программа тестирования на получение логотипа «Certified for Windows» <0}

{0>http://msdn.microsoft.com/winlogo/<}0{>http://msdn.microsoft.com/certification/<0}

{0>Logo information e-mail<}0{>Адрес электронной почты для получения информации о логотипах<0}

{0>Winlogo@microsoft.com<}0{>Winlogo@microsoft.com<0}

{0>Windows 2000 Readiness Program for Applications and Developers<}0{>Программа Windows 2000 Readiness для приложений и разработчиков<0}

{0>http://msdn.microsoft.com/msdnisv/win2000<}0{>http://msdn.microsoft.com/msdnisv/win2000<0}

{0>Windows 2000 Online Special Interest Group<}0{>Windows 2000 Online Special Interest Group<0}

{0>http://msdn.microsoft.com/osig/win2000<}0{>http://msdn.microsoft.com/osig/win2000<0}

{0>Microsoft information for
software developers
<}0{>Информация компании Microsoft для
разработчиков программного обеспечения <0}

{0>http://msdn.microsoft.com/<}0{>http://msdn.microsoft.com/<0}

{0>Microsoft information for
software developers
<}0{>Информация компании Microsoft для
разработчиков программного обеспечения (на русском языке)<0}

{0>http://msdn.microsoft.com/<}0{>http://msdn.microsoft.com/rus<0}

{0>Knowledge Base <}0{>База знаний<0}

{0>http://support.microsoft.com/support/<}0{>http://support.microsoft.com/support/<0}

{0>Microsoft Platform SDK<}0{>Microsoft Platform SDK<0}                 {0>(Software Developer Kit)<}0{>(Software Developer Kit- Комплект средств разработчика программ)<0}
               {0>Documents the Win32® and Win64™<}0{>Документация по интерфейсам прикладных программ (API) <0}            {0>application programming interfaces<}0{> Win32® и Win64™<0}

{0>Provided with Microsoft Developer Network (MSDN)<}0{>Поставляется вместе с Microsoft Developer Network (MSDN)<0}   {0>Professional Subscription.<}0{>Профессиональная подписка.<0} {0>To subscribe, visit<}0{>Подписаться можно по адресу:<0}
               {0>http://msdn.microsoft.com/subscriptions.<}0{>http://msdn.microsoft.com/subscriptions.<0}

 


{0>Checklist for Windows Certification<}0{>Список требований для Сертификации Windows<0}

Win95

Win98

NTW 4

Win2000

 

 

 

 

 

{0>Windows Fundamentals<}0{>Основы Windows<0}

X

X

X

X

{0>1.1   Perform primary functionality and maintain stability<}0{>1.1   Выполнение первичных функций и обеспечение стабильной работы<0}

X

X

X

X

{0>1.2   Provide 32-bit components<}0{>1.2 Наличие 32-разрядных компонентов<0}

X

X

X

X

{0>1.3   Support Long File Names and UNC paths<}0{>1.3   Поддержка длинных имен файлов и путей в формате UNC<0}

X

X

X

X

{0>1.4   Support printers with long names and UNC paths<}0{>1.4   Поддержка принтеров с длинными названиями и путями в формате UNC<0}

 

 

X

X

{0>1.5   Do not read from or write to Win.ini, System.ini, Autoexec.bat or Config.sys on any Windows operating system based on NT technology.<}0{>1.5   Отсутствие чтения или записи в файлы Win.ini, System.ini, Autoexec.bat или Config.sys в любой операционной системе Windows на базе технологии NT.<0}

X

X

X

X

{0>1.6   Ensure non-hidden files have associated file-types, and all file-types have associated icons, descriptions, and actions <}0{>1.6   Наличие сопоставленных всем нескрытым файлам типов файлов и сопоставленных всем типам файлов пиктограмм, описаний и действий <0}

X

X

X

X

{0>1.7   Perform Windows version checking correctly<}0{>1.7   Корректная проверка версии Windows<0}

X

X

X

X

{0>1.8   Support AutoPlay of compact discs<}0{>1.8   Поддержка автоматического воспроизведения компакт-дисков<0}

 

 

 

X

{0>1.9   Kernel mode drivers must pass verification testing on Windows 2000<}0{>1.9   Драйверы ядра должны пройти проверку на платформе Windows 2000<0}

 

X

X

X

{0>1.10  Hardware drivers must pass WHQL testing<}0{>1.10   Драйверы для аппаратуры должны пройти проверку WHQL<0}

 

 

 

 

 

 

 

 

 

{0>Install/Uninstall<}0{>Установка/Удаление<0}

X

X

X

X

{0>2.1   Install using a Windows Installer-based package that passes validation testing<}0{>2.1   Установка с помощью пакета на базе Windows Installer, прошедшего испытание на безошибочность <0}

X

X

X

X

{0>2.2   Observe rules in componentization<}0{>2.2   Соблюдение правил разбивки приложений на компоненты<0}

X

X

X

X

{0>2.3   Identify shared components<}0{>2.3   Идентификация совместно используемых компонентов<0}

X

X

X

X

{0>2.4   Install to Program Files by default<}0{>2.4   Установка по умолчанию в каталог Program Files<0}

X

X

X

X

{0>2.5   Support Add/Remove Programs properly<}0{>2.5   Корректная поддержка Добавления/Удаления программ<0}

X

X

X

X

{0>2.6   Ensure that your application supports advertising<}0{>2.6   Поддержка приложением оповещения<0}

X

X

X

X

{0>2.7   Ensure correct uninstall support<}0{>2.7   Корректная поддержка удаления<0}

 

 

 

 

 

 

 

 

 

{0>Component Sharing<}0{>Совместное использование компонентов<0}

 

 

 

X

{0>3.1   Do not attempt to replace files that are protected by System File Protection<}0{>3.1   Отсутствие попыток перемещения файлов, защищенных с помощью Защиты системных файлов, в системе Windows 2000<0}

 

X

 

X

{0>3.2   Component producers:<}0{>3.2   Производителям компонентов<0} {0>Build side-by-side components<}0{>следует разрабатывать смежные компоненты<0}

 

X

 

X

{0>3.3   Application developers:<}0{>3.3   Разработчикам приложений<0} {0>Consume and install side-by-side components<}0{>следует использовать и устанавливать смежные компоненты<0}

X

X

X

X

{0>3.4   Install any non side-by-side shared files to the correct locations<}0{>3.4   Установка совместно используемых файлов, не являющихся смежными, в корректные каталоги<0}

 

 

 

 

 

 

 

 

 

{0>Data and Settings Management<}0{>Управление данными и настройками<0}

X

X

X

X

{0>4.1   Default to My Documents for storage of user-created data<}0{>4.1 Использование по умолчанию папки Мои документы для хранения пользовательских данных <0}

X

X

X

X

{0>4.2   Classify and store application data correctly<}0{>4.2   Корректная классификация и хранение данных приложения<0}

 

 

X

X

{0>4.3   Degrade gracefully on access denied<}0{>4.3   Корректная обработка запрета доступа <0}

 

 

X

X

{0>4.4   Run in a secure Windows environment<}0{>4.4   Работа в защищенной среде Windows<0}

 

 

 

X

{0>4.5   Adhere to system-level Group Policy settings<}0{>4.5   Использование системных настроек Политика группы<0}

 

 

 

X

{0>4.6   Applications that create ADM files must properly store their ADM file settings in the registry<}0{>4.6   Приложения, которые создают файлы ADM, должны соответствующим образом хранить свои настройки файлов ADM в реестре<0}

 

 

 

 

 

 

 

 

 

{0>User Interface Fundamentals<}0{>Основы пользовательского интерфейса<0}

X

X

X

X

{0>5.1   Support standard system size, color, font, & input settings<}0{>5.1   Поддержка стандартного размера, цвета, шрифта и настроек ввода системы<0}

X

X

X

X

{0>5.2   Ensure compatibility with the High Contrast option<}0{>5.2   Обеспечение совместимости с параметром Высокая Контрастность<0}

X

X

X

X

{0>5.3   Provide documented keyboard access to all features<}0{>5.3   Предоставление описанного в документации доступа с клавиатуры ко всем функциям <0}

X

X

X

X

{0>5.4   Expose the location of the keyboard focus<}0{>5.4   Предоставление информации о местоположении фокуса ввода с клавиатуры<0}

X

X

X

X

{0>5.5   Do not rely exclusively on sound<}0{>5.5   Не полагаться только на звуковые эффекты<0}

X

X

X

X

{0>5.6   Do not place shortcuts to documents, help, or uninstall in the Start Menu<}0{>5.6   Отсутствие ярлыков для документов, справки или функции удаления в меню Пуск<0}

 

X

 

X

{0>5.7   Support multiple monitors<}0{>5.7   Поддержка нескольких мониторов<0}

 

 

 

 

 

 

 

 

 

{0>OnNow/ACPI Support<}0{>Поддержка OnNow/ACPI<0}

 

X

 

X

{0>6.1   Indicate busy application status properly<}0{>6.1   Корректное указание состояния «приложение занято»<0}

 

X

 

X

{0>6.2   Respond to sleep requests from the operating system properly<}0{>6.2   Корректная реакция на запросы операционной системы о переходе в спящий режим<0}

 

X

 

X

{0>6.3   Handle sleep notifications properly<}0{>6.3   Корректная обработка уведомления о спящем режиме<0}

 

X

 

X

{0>6.4   Handle wake from normal sleep without losing data<}0{>6.4   Сохранение данных при обычном «пробуждении»<0}

 

X

 

X

{0>6.5   Handle wake from critical sleep properly<}0{>6.5   Корректная обработка «пробуждения» от критического сна<0}

 

 

 

 

 

 

 

 

 

{0>Application Migration<}0{>Миграция приложения<0}

X

X

X

 

{0>7.1   Application must continue to function after upgrade to Windows 2000 Professional without reinstall<}0{>7.1   Приложение должно по-прежнему функционировать после перехода на Windows 2000 Professional без необходимости переустановки <0}


 


{0>Contents<}0{>Содержание<0}

 

 

 

Acknowledgments_______________________________ Error! Bookmark not defined.

 

Welcome      _________________________________________________________ v

 

Checklist for Windows Certification_______________________________________ ix

 

Chapter 1     Windows Fundamentals______________________________________ 1

Описаны требования для постоянного, устойчивого функционирования.

 

Chapter 2     Install/Uninstall____________________________________________ 15

Описаны требования для установки программы Windows Installer, таким образом, что приложение может быть развернуто в корпоративном окружении.

 

Chapter 3     Component Sharing________________________________________ 24

Описаны требования для обработки разделяемых компонентов для бесконфликтного сосуществования приложений.

 

Chapter 4     Data and Settings Management_______________________________ 33

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

 

Chapter 5     User Interface Fundamentals_________________________________ 51

Описаны требования к приложению для обеспечения надежного и удобного пользовательского интерфейса.

 

Chapter 6     OnNow/ACPI Support_______________________________________ 70

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

 

Chapter 7     Application Migration_______________________________________ 81

Описаны требования, чтобы убедиться, что приложение продолжает функционировать корректно после замены пользователем операционной системы на Windows 2000.

 

Appendix A   Best Practices____________________________________________ 87

Рекомендации по улучшению работы не обязательны для признания приложения соответствующим спецификации для Windows 2000, но настоятельно рекомендуется для улучшения работы пользователей.

 

Glossary       ________________________________________________________ 99

 


 

{0>Windows Fundamentals<}0{>Основы Windows<0}

{0>Summary of Windows Fundamental Requirements<}0{>Сводка основных требований Windows<0}

{0>Describes the requirements for consistent, stable functionality.<}0{>‑{}‑<0}

{0>Rationale<}0{>Логическое обоснование<0}

{0>Passing these requirements will help you to ensure that your application runs in a stable, reliable manner on Windows operating systems.<}0{>Соответствие данным требованиям гарантирует стабильную и надежную работу приложения в операционных системах Windows.<0}

{0>Customer Benefits<}0{>Преимущества пользователя<0}

{0>Customers can be confident that a compliant product will not adversely affect the reliability of the operating system.<}0{>Пользователи могут быть уверены, что соответствующий требованиям продукт не будет неблагоприятно влиять на работу операционной системы.<0}

{0>Requirements<}0{>Требования<0}

1.     {0>Perform primary functionality and maintain stability<}0{>Обеспечение основной функциональности и стабильной работы<0}

2.     {0>Provide 32-bit components<}0{>Наличие 32-разрядных компонентов<0}

3.     {0>Support Long File Names and UNC paths<}0{>Поддержка длинных имен файлов и путей в формате UNC<0}

4.     {0>Support printers with long names and UNC paths<}0{>Поддержка принтеров с длинными названиями и путями в формате UNC<0}

5.     {0>Do not read from or write to Win.ini, System.ini, Autoexec.bat or Config.sys on any Windows operating system based on NT technology.<}0{>Отсутствие чтения или записи в файлы Win.ini, System.ini, Autoexec.bat или Config.sys в любой операционной системе Windows на базе технологии NT.<0}

6.     {0>Ensure files have associated file-types, and all file-types have associated icons, descriptions, and actions<}0{>Наличие сопоставленных всем нескрытым файлам типов файлов и сопоставленных всем типам файлов пиктограмм, описаний и действий<0}

7.     0>Perform Windows version checking correctly<}0{>Корректная проверка версии Windows<0}

8.     0>Support AutoPlay of compact discs<}0{>Поддержка автоматического воспроизведения компакт-дисков<0}

9.     {0>Kernel mode drivers must pass verification testing on Windows 2000<}0{>Драйверы режима ядра должны пройти проверку на платформе Windows 2000<0}

10.  {0>Hardware drivers must pass WHQL testing<}0{>Драйверы для аппаратуры должны пройти проверку в лаборатории WHQL<0}

 

{0>References<}0{>Справочная информация<0}

{0>AutoPlay information and description<}0{>Информация и описание функции автоматического воспроизведения<0}

http://premium.microsoft.com/msdn/library/techart/msdn_autoplay.htm

{0>Supporting Long File Names <}0{>Поддержка длинных имен файлов<0}

      {0>http://msdn.microsoft.com/library/sdkdoc/boguide/bodev_2wdf.htm<}0{>http://msdn.microsoft.com/library/sdkdoc/boguide/bodev_2wdf.htm<0}

{0>Link utility — Microsoft Platform SDK <}0{>Утилита компоновки — Microsoft Platform SDK <0}

{0>Using Driver Verifier tool:<}0{>Использование утилиты проверки драйверов:<0} {0>http://www.microsoft.com/hwdev/driver/driververify.htm <}0{>http://www.microsoft.com/hwdev/driver/driververify.htm <0}


{0>How to Comply with Windows Fundamental Requirements<}0{>Соответствие основным требованиям Windows<0}

1.   {0>Perform primary functionality and maintain stability<}0{>Выполнение первичных функций и обеспечение стабильной работы<0}

{0>Your application must perform its primary functions without compromising the stability of the operating system or your application.<}0{>Ваше приложение должно выполнять основные функции, не влияя отрицательно на работу операционной системы или самого приложения.<0}

{0>If your application is available on other Windows operating systems, your application must perform its primary functionality at least as well on Windows 2000 as it does on down-level versions of Windows.<}0{>Если Ваше приложение доступно в других операционных системах Windows, в Windows 2000 оно должно работать по крайней мере не хуже, чем в системах Windows более ранних версий.<0}

{0>For example:<}0{>Например:<0}

·         {0>If your application creates, edits and saves multi-page documents, it must not crash or hang, and it must not lose user's data when they create, edit, save, or open documents up to the maximum size you specify.<}0{>Если Ваше приложение создает, редактирует и сохраняет документы, состоящие из нескольких страниц, оно не должно приводить к сбою, зависать, а данные пользователей при создании, редактировании, сохранении или открытии документов размером вплоть до указанного максимального размера не должны пропадать.<0}

·         {0>If your application displays information about the folders on the user’s hard drive, it must not crash or destroy data if the user performs any of the menu functions in the application, such as creating new folders, moving them, or renaming them.<}0{>Если приложение отображает информацию о папках, хранящихся на жестком диске пользователя, оно не должно удалять и не повреждать данных при выполнении пользователем какой-либо функции меню в приложении, например, при создании новых папок, перемещении их и переименовании.<0}

{0>Users must be able to use system features supported by Windows 2000 with your application.<}0{>Пользователи должны иметь возможность использовать в приложении функции системы, поддерживаемые Windows 2000.<0} {0>For example:<}0{>Например:<0}

·         {0>Windows 2000 supports mice with more than three buttons.<}0{>Windows 2000 поддерживает гораздо более трех кнопок.<0} {0>Your application should not crash, hang or lose data when the user presses any button on a supported mouse.<}0{>Приложение не должно прекращать работу, зависать или терять данные при нажатии пользователем любой кнопки мыши.<0}

·         {0>Your application should not expect Windows 2000 system files or temporary folders to be on any particular drive letter or have any maximum or minimum size.<}0{>Приложения не должны предполагать, что системные файлы или временные папки Windows 2000 находятся на каком-либо конкретном диске, или имеют определенный максимальный или минимальный размер.<0} {0>Windows 2000 may be installed on drives larger than 9GB with drive letters other than C or D. The C:<}0{>Система Windows 2000 может устанавливаться на диски размером свыше 9 Гб с любой буквой диска, а не только C или D. Диск C:<0} {0>or boot drive can be quite small, under 100MB.<}0{>или загрузочный диск может небольшим, до 100 МБ.<0}

 

2.   {0>Provide 32-bit components<}0{>Наличие 32-разрядных компонентов<0}

{0>An application must be a 32-bit executable file of the Portable Executable (PE) format.<}0{>Приложение должно быть 32-х разрядным исполняемым файлом в формате Portable Executable (PE).<0} {0>This means that all executable files, including dynamic-link libraries (DLLs) and executable (EXE) program files, must be 32-bit files.<}0{>Это означает, что все исполняемые файлы, включая динамически подключаемые библиотеки (Dynamic-link Libraries - DLL) и исполняемые программные файлы (EXE), должны быть 32-х разрядными файлами.<0} {0>You can test for the correct executable format by using the Link utility on the Microsoft Platform Software Developer’s Kit (SDK) or the Install Analyzer tool available for free download from http://msdn.microsoft.com/winlogo/downloads.asp.<}0{>Вы можете проверить корректность исполняемого формата с помощью утилиты компоновки из Комплекта разработчика программного обеспечения Microsoft Platform SDK или с помощью утилиты Install Analyzer, которую можно загрузить по адресу http://msdn.microsoft.com/winlogo/downloads.asp.<0} 

{0>If your application is not represented in PE format, for example, interpreted code, then the «run-time engine» must be a Win32-based executable file in PE format.<}0{>Если приложение не представлено в формате PE (например, интерпретированный код), то «ядро среды выполнения» должно быть исполняемым файлом на базе Win32 в формате PE.<0} {0>For example, if you develop an application in Microsoft Access, your application is an .mdb file, not an .exe file.<}0{>Например, если Вы разрабатываете приложение в Microsoft Access, это приложение будет файлом с расширением .mdb, а не .exe.<0} {0>However, msaccess.exe is a Win32-based executable file in the PE format.<}0{>Однако файл msaccess.exe является исполняемым файлом на платформе Win32 в формате PE.<0}

{0>If you require 16-bit executable files or DLLs for backward compatibility and links to 16-bit products, you must provide a mechanism to ensure that the application continues to function properly if the user upgrades the operating system to Windows 2000. For more information, see Chapter 7, «Application Migration.»<}0{>Если Вам необходимы 16-разрядные исполняемые файлы или модули DLL для совместимости с предыдущими версиями и связи с 16-разрядными продуктами, следует обеспечить механизм, гарантирующий корректную работу приложения при обновлении операционной системы Windows до Windows 2000. Дополнительную информацию можно найти в Главе 7 «Миграция приложений».<0}


{0>Note:<}0{>Замечание:<0} {0>Whenever possible, you should avoid using any 16-bit code even for backward compatibility, because 64-bit versions of Windows will not support 16-bit code.<}0{>При возможности следует избегать использования 16-разрядного кода даже для совместимости с предыдущими версиями, поскольку 64-разрядные версии Windows не будут поддерживать 16-разрядный код.<0}

{0>Important:<}0{>Важно:<0} {0>When you submit your product for compliance testing, you must list the filename and fully explain the use of any 16-bit file your application could install.<}0{>Перед проверкой продукта на соответствие необходимо указать имена и представить полное описание использования всех 16-разрядных файлов, которые это приложение может установить.<0} {0>This must be done in the electronic Vendor Questionnaire you submit with your application.<}0{>Эти данные необходимо указать в электронной Анкете поставщика, подаваемой с заявкой.<0}

{0>Note:<}0{>Замечание:<0} {0>Each 16-bit file must be tested as part of the Certification process to ensure that system stability is not compromised.<}0{>Для гарантии стабильной работы системы каждый 16-разрядный файл должен быть проверен как часть процесса Сертификации.<0} {0>This may require additional testing time and consequent additional charges by the testing agency.<}0{>Для этой проверки может потребоваться дополнительное время и дополнительные затраты для оплаты работы тестирующей лаборатории.<0} {0>The time and charges will be determined on a case-by-case basis by the testing agency.<}0{>Время и оплата определяется тестирующей лабораторией в каждом отдельном случае.<0}

 

3.   {0>Support Long File Names and UNC paths<}0{>Поддержка длинных имен файлов и путей в формате UNC<0}

{0>Applications must support all valid Win32 file names, including Long File Names (LFNs) and Universal Naming Convention (UNC) names.<}0{>Приложения должны поддерживать все допустимые имена файлов Win32, включая длинные имена файлов (Long File Names - LFN) и имена, соответствующие универсальному соглашению об именах (Universal Naming Convention - UNC).<0} {0>For more details on valid Win32 long file names, see the Platform SDK or http://msdn.microsoft.com/library/sdkdoc/boguide/bodev_2wdf.htm.<}0{>Более подробную информацию о допустимых длинных именах файлов Win32 можно получить в Platform SDK или по адресу http://msdn.microsoft.com/library/sdkdoc/boguide/bodev_2wdf.htm.<0}

{0>For example, your application must properly recognize and display the following paths.<}0{>Например, приложение должно корректно распознавать и отображать следующие пути.<0}

{0>C:\documents and settings\joe user\my documents\my letter.txt<}0{>C:\документы и настройки\пользователь joe\мои документы\мое письмо.txt<0}

{0>\\server\sharename\joe user\my letter.txt  <}0{>\\сервер\имя папки\пользователь joe\мое письмо.txt  <0}

 

4.   {0>Support printers with long names and UNC paths<}0{>Поддержка принтеров с длинными названиями и путями в формате UNC<0}

{0>Windows allows long file names for Printers.<}0{>В системе Windows допускается присвоение длинных имен принтерам.<0} {0>Your application must accept names up to 255 characters long for printers, and print to devices with names such as these:<}0{>Приложение должно поддерживать названия принтеров длиной до 255 символов и выполнять печать на устройства с такими именами:<0}

{0>\\PrintServer44.domain.com\Duplex printer:<}0{>\\PrintServer44.domain.com\Дуплексный принтер:<0} {0>number 0047 (accounting group)<}0{>номер 0047 (учетная группа)<0}

{0>Color laser - Research & Design Dept IP 123.456.78.9 see Fred or Wilma<}0{>Цветной лазерный принтер - Research & Design Dept IP 123.456.78.9, обратитесь к Антону или Марии<0}

{0>Note that commas and exclamation points are illegal printer name characters.<}0{>Необходимо помнить, что запятые и восклицательные в именах принтеров использовать запрещено.<0}

 

5.   {0>Do not read from or write to Win.ini, System.ini, Autoexec.bat or Config.sys on any Windows operating system based on NT technology.<}0{>Отсутствие чтения или записи в файлы Win.ini, System.ini, Autoexec.bat или Config.sys в любой операционной системе Windows на базе технологии NT.<0}

{0>Your application must not read from or write to Win.ini, System.ini, Autoexec.bat, or Config.sys on any Windows operating system based on NT technology.<}0{>Приложение не должно выполнять чтение или запись в файлы Win.ini, System.ini, Autoexec.bat или Config.sys в любой операционной системе Windows на базе технологии NT.<0} {0>These file are not used by NT-based Windows operating systems and some users remove them.<}0{>Эти файлы не используются операционными системами Windows на базе NT, и некоторые пользователи удаляют их.<0}

 


6.   {0>Ensure non-hidden files have associated file-types, and all file-types have associated icons, descriptions, and actions<}0{>Наличие сопоставленных всем нескрытым файлам типов файлов и сопоставленных всем типам файлов пиктограмм, описаний и действий<0}

{0>Every non-hidden file that your application creates outside its directory in "Program Files" (see requirement 2.4) must have an associated registered file-type.<}0{>Каждому нескрытому файлу, который создается приложением в каталоге "Program Files" (см. требование 2.4), должен быть сопоставлен зарегистрированный тип файла.<0} {0>This includes:<}0{>К нескрытым файлам относятся:<0}

·         {0>Files created during installation<}0{>Файлы, созданные во время установки<0}

·         {0>Implementation and data files<}0{>Файлы реализации и файлы данных<0}

·         {0>User created files that are native to your application<}0{>Внутренние файлы приложения, созданные пользователями <0}

{0>If the filetype is already registered, no action is required, though you may take over the filetype if you wish.<}0{>Если этот тип файл уже зарегистрирован, не нужно предпринимать никаких действий, хотя Вы можете использовать и другой тип файла.<0}

{0>If the filetype is not already registered, you must do the following for each new file type:<}0{>Если этот тип файла еще не зарегистрирован, необходимо выполнить для всех новых типов файлов следующие действия:<0}

·         {0>Provide an icon so that none of the files that your application creates is identified by the default Windows icon.<}0{>Определить пиктограмму, чтобы файлы, создаваемые приложением, помечались ею, а не пиктограммой Windows, используемой по умолчанию.<0}

·         {0>Provide a friendly type description, for example, «Outlook Offline Mail File.»<}0{>Укажите краткое описание типа, например, «Outlook Offline Mail File.»<0}

·         {0>Ensure that each filetype has an associated action when double clicked (e.g. launch your application and load the file), or is designated as «NoOpen».<}0{>Убедитесь, что каждому типу файла назначено действие, которое будет выполняться при двойном щелчке (например, запустить приложение и загрузить этот файл), или указано действие «Не открывать».<0}

{0>The NoOpen designation is for files that you don’t want users to open.<}0{>Действие Не открывать обычно указывается для файлов, которые пользователи не должны открывать.<0} {0>When the user double-clicks on a file marked as NoOpen, the operating system will automatically provide a message informing the user that the file should not be opened.<}0{>При двойном щелчке на файле с пометкой Не открывать операционная система автоматически выдаст пользователю сообщение, что файл не будет открыт.<0} {0>Note that if an action is later associated with a NoOpen file type, the NoOpen designation will be ignored.<}0{>Необходимо помнить, что если в дальнейшем с типом файла Не открывать будет связано какое-то действие, действие Не открывать будет отменено.<0}

 

{0>Exception:<}0{>Исключение:<0} {0>If your application allows the user to save or export file types that aren’t native to your application, the user may choose to save a file as a type that has no association on the user’s computer.<}0{>Если приложение позволяет пользователю сохранять или экспортировать файлы, которые не являются внутренними файлами приложения, пользователь может сохранить файл как тип, которому не назначено ни одного действия на компьютере пользователя.<0} {0>Your application may save the file as requested by the user, even though the file will have a default Windows icon.<}0{>Приложение сохранит файл в соответствии с запросом пользователя, даже если с файлом связана пиктограмма Windows по умолчанию.<0}

 

{0>Implementation details:<}0{>Подробности реализации:<0}

{0>To check if a file extension is already registered:<}0{>Чтобы проверить, зарегистрировано ли расширение файла:<0}

·         {0>Under HKCR, look for the key that is named with the 3 (or more) character file extension, such as ".txt".<}0{>В разделе HKCR найдите параметр, имя которого совпадает с расширением из 3 или более букв, например, ".txt".<0}  {0>If the key with that file extension doesn't exist, you must register it (see below).<}0{>Если параметра с таким именем не существует, необходимо зарегистрировать его (см. ниже).<0}

{0>To register new filetypes:<}0{>Чтобы зарегистрировать новые типы файлов:<0}

·         {0>Create a filetype under HKCR.<}0{>Создайте тип файла в разделе HKCR.<0} {0>The filetype is the unique identifier for all files with a given file extension.<}0{>Тип файла – это уникальный идентификатор для всех файлов с заданным расширением.<0} {0>For example, «txtfile» is the filetype for files with the .txt extension.<}0{>Например, «txtfile» - это тип файлов с расширением .txt.<0} {0>Note that multiple extensions can point to the same filetype.<}0{>Помните, что на один и тот же тип файла могут указывать несколько расширений.<0} {0>For example, «.txt» and «.log» both point to the same filetype, «txtfile.»<}0{>Например, расширения «.txt» и «.log» указывают на один тип файла - «txtfile.»<0} {0>The default value for the filetype key is the «friendly name» that is displayed in explorer.<}0{>По умолчанию для типа файла используется «заменяющее имя», которое отображается в Проводнике.<0}  {0>For example, extensions that point to the «txtfile» key have the friendly name, «Text Document.»Under HKCR, create a three-character or longer extension for your filetype.<}0{>Например, расширения, которые указывают на параметр «txtfile», имеют заменяющее имя - Текстовый документ». В разделе HKCR создайте расширение для файла, состоящее из трех или более символов.<0} {0>We recommend 4 or 5 characters since this will help avoid filetype collisions and will make the filetype easier to identify.<}0{>Рекомендуется создавать расширения, состоящие из 4 или 5 символов, чтобы избежать конфликтов между типами файлов и легче идентифицировать файлы.<0} {0>Then set the defaut value for the file extension to point to the filetype you've just created.<}0{>Затем укажите значение по умолчанию для расширения файла, указывающего на только что созданный тип файла.<0}  {0>For example the default value for ".txt" is the filetype "txtfile".<}0{>Например, для ".txt" по умолчанию используется тип файла "txtfile".<0}


{0>To register an icon for a filetype:<}0{>Чтобы зарегистрировать пиктограмму для типа файла:<0}

·         {0>Under the filetype key, create the 'DefaultIcon' key as a REG_SZ or REG_EXPAND_SZ and point it to an icon you provide.<}0{>В параметре типа файла создайте параметр 'DefaultIcon' в форме REG_SZ или REG_EXPAND_SZ и назначьте для него пиктограмму.<0}  {0>For example, for "txtfile" the value is "%SystemRoot%\system32\shell32.dll,-152" meaning "use the 152nd icon in shell32.dll".<}0{>Например, для "txtfile" значением будет "%SystemRoot%\system32\shell32.dll,-152", что означает "использовать 152-ую пиктограмму в shell32.dll".<0}

{0>To identify a file as «No Open»:<}0{>Чтобы назначить файлу действие «Не открывать»:<0}

·         {0>Under the filetype key, add the «NoOpen» Reg_SZ value.<}0{>В разделе типа файла укажите значение «Не открывать» Reg_SZ.<0} {0>Custom text can then be added to the value if you would like to customize the message.<}0{>Затем в значение можно добавить произвольный текст, если Вы хотите настроить сообщение.<0}  {0>See the «ocxfile» key in HKCR for an example.<}0{>В качестве примера см. параметр «ocxfile» в разделе HKCR.<0}

 

{0>Example:<}0{>Пример:<0} {0>Registry structure to associate «.txt» file extension with «Txtfile» file type:<}0{>Структура реестра для связи расширения файла «.txt» с типом файла «Txtfile»:<0}

HKEY_CLASSES_ROOT\.txt

          (default) = "txtfile"

 

HKEY_CLASSES_ROOT\txtfile

                 \DefaultIcon

                        (default) = %SystemRoot%\system32\shell32.dll,-152

                 \shell\open\command

                        (default) = %SystemRoot%\system32\NOTEPAD.EXE %1

 

 

7.   {0>Perform Windows version checking correctly<}0{>Корректная проверка версии Windows<0}

{0>Your application must verify that the operating system meets the minimum version requirements for your application.<}0{>Приложение должно проверить, отвечает ли версия операционной системы минимальным требованиям этого приложения.<0} {0>The application must also install and run on all later versions of that operating system.<}0{>Приложение должно также устанавливаться и запускаться во всех более поздних версиях данной операционной системы.<0}

{0>For example, if the application requires Windows NT 4.0 with Service Pack 3 (SP3), your version checking should allow installation on Major Version 4, Minor Version 0, SP3, and it must also install on all operating system version numbers that are greater than this number (such as Windows NT 4.0 Service Pack 4 (SP4), Windows 2000, Windows 2000 with any subsequent Service Packs, and so on).<}0{>Например, если для приложения необходима Windows NT 4.0 с Пакетом обновления 3 (SP3), проверка версии Вашим приложением должна позволять проводить установку в старшей версии 4, младшей версии 0, SP3, а также устанавливаться во всех операционных системах с номером версии больше этого числа (таких как Windows NT 4.0 с Пакетом обновления 4 (SP4)), Windows 2000 с любым последующим Пакетом обновления и т.д.).<0}

{0>Exception:<}0{>Исключение:<0}  {0>In certain cases it is acceptable to block install on later versions of the OS.<}0{>В определенных случаях допускается блокировка установки в более поздних версиях ОС.<0} {0>If you choose to do this, you must:<}0{>В этом случае нужно:<0}

1.     {0>Document this in the Vendor Questionnaire and explain the rationale.<}0{>Документировать это в Анкете поставщика и объяснить причину.<0}

1.     {0>Display a message to the user when blocking installation or execution that your application is not designed for the later OS version.<}0{>При блокировке установки или выполнения вывести сообщение о том, что приложение не поддерживает более поздние версии этой ОС.<0}

{0>Examples where this is appropriate would be for low-level disk utilities.<}0{>Примером могут служить утилиты для работы с диском на низком уровне.<0} {0>In this case, running such an application on an OS for which the product was not tested for could potentially result in lost user data, if for example there were changes in the file system that the application was not aware of.<}0{>Запуск такого приложения в ОС, для которой оно не было протестировано, может впоследствии привести к потере данных пользователя, например, если в файловой системе произошли изменения, о которых данному приложению неизвестно.<0}

{0>In general, you should use the GetVersionEx() API to determine the OS version.<}0{>В общем, для определения версии ОС следует использовать функцию API GetVersionEx().<0} {0>If you need to verify the version of an NT4 Service Pack prior to Service Pack 4, you should also query the following registry key to determine the SP level.<}0{>Если нужно убедиться, что версия Пакета обновления NT4 более ранняя, чем Пакет обновления 4, для определения версии SP необходимо запросить следующий параметр реестра.<0}

{0>HKLM\system\CurrentControlSet\control\windows\CSDVersion<}0{>HKLM\system\CurrentControlSet\control\windows\CSDVersion<0}

 

{0>The values of CSDVersion will be 0x100 for Service Pack 1, 0x200 for Service Pack 2, etc. See below for code sample to determine the Service Pack level.<}0{>Значение SDVersion 0x100 соответствует Пакету обновления 1, 0x200 - Пакету обновления 2, и т.д. Пример кода для определения уровня Пакета обновления см. ниже.<0}


{0>Code sample to verify the Windows version requirements<}0{>Образец кода для проверки требований к версии Windows<0}

{0>This code runs on all 32-bit Windows platforms.<}0{>Этот код работает на всех 32-разрядных платформах Windows.<0}

BOOL bIsWindowsVersionOK(DWORD dwMajor, DWORD dwMinor, DWORD dwSPMajor )

{

OSVERSIONINFO osvi;

 

// {0>Initialize the OSVERSIONINFO structure.<}0{>Инициализация структуры OSVERSIONINFO<0}

//

ZeroMemory(&osvi, sizeof(OSVERSIONINFO));

osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

GetVersionEx((OSVERSIONINFO*)&osvi);

 

// {0>First the major version<}0{>Сначала старшая версия<0}

if ( osvi.dwMajorVersion > dwMajor )

    return TRUE;

else if ( osvi.dwMajorVersion == dwMajor )

    {

    // {0>Then the minor<}0{>Затем младшая<0}

    if (osvi.dwMinorVersion > dwMinor )

           return TRUE;

    else if (osvi.dwMinorVersion == dwMinor )

           {

// {0>OK, better check the Service Pack<}0{>Проверить Пакет обновления<0}

           if ( dwSPMajor &&

           osvi.dwPlatformId == VER_PLATFORM_WIN32_NT )

                  {

                  HKEY   hKey;

                  DWORD dwCSDVersion;

                  DWORD dwSize;

                  BOOL   fMeetsSPRequirement = FALSE;

 

                  if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                         System\\CurrentControlSet\\Control\\Windows",

0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)

                         {

                         dwSize = sizeof(dwCSDVersion);

                         if (RegQueryValueEx(hKey, "CSDVersion",

                                NULL, NULL,

(unsigned char*)&dwCSDVersion,

&dwSize) == ERROR_SUCCESS)

                                {

                                fMeetsSPRequirement =

(LOWORD(dwCSDVersion) >= dwSPMajor);

                                }

                  RegCloseKey(hKey);

                  }

                  return fMeetsSPRequirement;

                  }

           return TRUE;

           }

    }

return FALSE;

}

 

8.   {0>Support AutoPlay of compact discs<}0{>Поддержка автоматического воспроизведения компакт-дисков<0}

{0>For products distributed on CD-ROM or DVD-ROM, the first time the disc is inserted, your application must use AutoPlay to either prompt the user to install or to run the application.<}0{>Если продукты распространяются на компакт-дисках или дисках DVD приложение должно использовать функцию автоматического воспроизведения для предложения пользователю установки приложения или для его запуска, когда диск впервые помещается в дисковод.<0} {0>It is up to you whether AutoPlay is enabled on subsequent insertions of the CD-ROM/ DVD-ROM.<}0{>Будет ли работать автоматическое воспроизведение при последующих вставках компакт-диска/диска DVD, зависит от Вас.<0} {0>In the case of products distributed on multiple discs, subsequent discs must either use the AutoPlay feature or behave during installation like a subsequent floppy disk; they must continue installation without prompting the user for action.<}0{>Если продукты распространяются на нескольких дисках, последующие диски должны либо использовать автоматическое воспроизведение, либо представляться как дискеты; они должны продолжать установку, не ожидая действия пользователя.<0}

{0>It is not acceptable to require the user to use Start/Run to launch the installation from the CD-ROM or DVD-ROM.<}0{>Пользователь не должен прибегать к меню Пуск/Выполнить для запуска установки с компакт-диска или диска DVD.<0}

{0>For more information on using AutoPlay, please see http://premium.microsoft.com/msdn/library/techart/msdn_autoplay.htm <}0{>Более подробную информацию об использовании автоматического воспроизведения можно найти по адресу http://premium.microsoft.com/msdn/library/techart/msdn_autoplay.htm <0}

 


9.   {0>Kernel mode drivers must pass verification testing on Windows 2000<}0{>Драйверы ядра должны пройти проверку на платформе Windows 2000<0}

{0>Poorly written kernel mode drivers have the potential to crash the system.<}0{>Некорректно написанные драйверы для ядра системы могут впоследствии привести к ее сбою.<0} {0>Therefore, it is critical that any application that includes kernel mode drivers, such as anti-virus products, be thoroughly tested to minimize this risk.<}0{>Поэтому очень важно, чтобы любое приложение, включающее драйверы ядра, например антивирусные продукты, было тщательно протестировано для минимизации риска.<0}

{0>If your application includes any kernel mode drivers, each of these drivers must pass validation triggered by the Windows 2000 Driver Verifier Manager tool (Verifier.exe).<}0{>Если Ваше приложение включает какие-либо драйверы ядра, все они должны пройти проверку, включаемую Диспетчером проверки драйверов Windows 2000 (Verifier.exe).<0}  {0>Driver Verifier is located in the \system32 directory on Windows 2000 systems.<}0{>Программа Проверки драйверов в системах Windows 2000 находится в каталоге \system32.<0} {0>See http://www.microsoft.com/hwdev/driver/driververify.htm for more information on using the Driver Verifier Tool and diagnosing driver problems.<}0{>Дополнительную информацию об использовании утилиты проверки драйверов и диагностики проблем драйверов можно найти по адресу http://www.microsoft.com/hwdev/driver/driververify.htm .<0}

 

10. {0>Hardware drivers must pass WHQL testing<}0{>Драйверы для аппаратуры должны пройти WHQL-тестирование<0}

{0>If your product includes drivers for hardware devices, these drivers must be tested by Windows Hardware Quality Labs (WHQL).<}0{>Если продукт содержит драйверы для аппаратных устройств, эти драйверы должны быть протестированы Лабораториями качества аппаратуры Windows (WHQL).<0} {0>Please note that turn-around times at WHQL can be up to 30 days.<}0{>Обратите внимание, что тестирование в WHQL может занять до 30 дней.<0} {0>For more information, see http://www.microsoft.com/hwdev/winlogo.<}0{>Дополнительную информацию можно найти по адресу http://www.microsoft.com/hwdev/winlogo.<0}

 

Предварительное тестирование приложений на основные требования Windows<0}

Проверка, является ли приложение 32-разрядным.<0}

{0>Use the Link utility in the Microsoft Platform SDK.<}0{>Используйте утилиту Link из Microsoft Platform SDK.<0} {0>Specifically, at the command line, type:<}0{>В частности, наберите в командной строке:<0} {0>«link –dump –headers exename.exe | more«.<}0{>«link –dump –headers exename.exe | more«.<0} {0>If your application is in the proper PE format, the output of this command will be:<}0{>Если приложение имеет корректный формат PE, Вы увидите на экране следующее:<0}

Microsoft (R) COFF Binary File Dumper Version 5.12.8181

Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

 

Dump of file exename.exe

 

PE signature found

 

File Type: EXECUTABLE IMAGE

.

.

.

0>You should not get the following output, which would be produced if the application were 16-bit:<}0{>Вы не должны увидеть следующую информацию, соответствующую 16-разрядному приложению:<0}

Microsoft (R) COFF Binary File Dumper Version 5.12.8181

Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

 

Dump of file exename.exe

LINK : warning LNK4095: " exename.exe" is an NE format executable; use EXEHDR to dump it

.

.

.

 

 

{0>To pretest for entries in Win.ini, System.ini, Autoexec.bat, and Config.sys files:<}0{>Предварительное тестирование записей в файлах Win.ini, System.ini, Autoexec.bat и Config.sys:<0}

1.   {0>Create and save copies of these files before installing the application on a computer where Windows has been freshly installed.<}0{> Перед установкой приложения на компьютер, на котором система Windows установлена впервые, создайте и сохраните копии этих файлов.<0}

2.   {0>Install the application.<}0{>Установите приложение.<0}

3.   {0>Launch the application, exercise basic functionality, then close the application.<}0{>Запустите приложение, поработайте с ним, затем закройте.<0}

4.   {0>Compare the installed version of the files to the saved version of the files, verifying that no changes have been made.<}0{>Сравните установленные файлы с сохраненными и убедитесь, что они не изменились.<0} {0>The Install Analyzer will verify this for you.<}0{>Анализатор установки проведет эту проверку для Вас.<0}

 

Проверка правильности работы программы с длинными именами файлов:<0}

{0>LFNs must do the following:<}0{>Для длинных имен файлов:<0}

·         {0>Allow plus signs, commas, semicolons, equal signs, and square brackets anywhere.<}0{>Допускаются знак плюс, запятые, точки с запятыми, знак равенства и квадратные скобки.<0}

·         {0>Not save leading or trailing spaces.<}0{>Пробелы в начале или в конце не сохраняются.<0} {0>You can test for this by typing «###test###» or similar text in the «Save As» dialog box.<}0{>Это можно проверить, набрав «###test###» или подобный текст в диалоговом окне «Сохранить как».<0} {0>(In this section, the number sign (#) indicates a spacebar space.)<}0{>(В этом разделе знак # обозначает символ пробела.)<0} {0>The program should strip the spaces and add an extension, returning the file name «test.ext».<}0{>Программа должна удалить пробелы, добавить расширение и возвратить имя файла «test.ext».<0}

·         {0>Not save question marks.<}0{>Вопросительные знаки запрещены.<0}

·         {0>Support 255 characters (including the path and extension).<}0{>Может использоваться 255 символов (включая путь и расширение).<0}

·         {0>Test the following list of file names, which should save to the hard disk as indicated:<}0{>Протестируйте следующий список имен файлов, который должен сохраниться на диске, как указано в таблице:<0}

Если Вы введете…

Должно быть записано:

«test»

«test.ext»

«   test»

«test.ext»

«test   «

 «test.ext»

«test#;#+#,#=#[#]»

«test#;#+#,#=#[#].ext»

\\server\share one\folder three\file

\\server\share one\folder three\file.ext

                       

{0>To run verification tests on kernel mode drivers<}0{>Запуск тестов для драйверов ядра<0}

1.     {0>Connect a kernel mode debugger to your test machine.<}0{>Подключите отладчик режима ядра к тестирующему компьютеру.<0} {0>For details on how to setup a kernel debugger, see http://msdn.microsoft.com/isapi/msdnlib.idc?theURL=/library/sdkdoc/tools/mipsntsd_4cys.htm.<}0{>Подробнее об установке отладчика ядра см. по адресу http://msdn.microsoft.com/isapi/msdnlib.idc?theURL=/library/sdkdoc/tools/mipsntsd_4cys.htm.<0}

2.     {0>Install your application with its kernel mode drivers.<}0{>Установите приложение вместе с его драйверами ядра.<0}

3.     {0>Start Verifier.exe and select the Modify Settings tab.<}0{>Запустите Verifier.exe и выберите закладку Изменить настройки.<0} {0>Add the name of each of your drivers to the Additional Drivers edit box.<}0{>Введите имена всех драйверов в поле Дополнительные драйверы.<0} {0>Separate the driver names with spaces and use only the name of the driver and its extension.<}0{>Разделяйте имена драйверов пробелами и используйте только имя драйвера и его расширение.<0} {0>Do not include path information.<}0{>Не включайте путь.<0}

4.     {0>Check only these options in Verification Type:<}0{>Для Типа проверки установите только следующие флажки:<0}

а.<0}   {0>Special Pool<}0{>Специальный пул<0}

б.<0}   {0>Force IRQL Checking<}0{>Проводить проверку IRQL<0}

в.   <0}Контроль пула<0}

г.<0}    {0>I/O Verification<}0{>Проверка ввода-вывода<0}

5.     {0>Click Apply, Exit and reboot.<}0{>Нажмите кнопку Применить, Выход, затем произведите перезагрузку.<0}

6.     {0>After reboot, start your application and run a series of typical user tests.<}0{>После перезагрузки запустите приложение и проведите серию обычных пользовательских тестов.<0} {0>If the Kernel detects any errors in your driver during boot or during the user tests, it will halt Windows 2000 and display the appropriate information on the character mode screen (blue screen) and on the kernel debugger.<}0{>Если в процессе загрузки или пользовательских тестов Ядро обнаружит в драйвере  какие-либо ошибки, это приведет к остановке Windows 2000 и выводу соответствующей информации в текстовом режиме (синий экран) и в отладчике ядра.<0} {0>If pool corruption is indicated in the debugger, uncheck Pool Tracking in Verification Type and restart.<}0{>Если в отладчике указано, что пул поврежден, снимите флажок Контроль пула в Типе проверки и повторите попытку.<0}  {0>When you’ve eliminated the errors, re-enable Pool Tracking and retest.<}0{>Устранив ошибки, вновь установите флажок Контроль пула и повторите тест.<0}

7.     {0>If you find no errors, restart Verifier.exe and enter each driver’s name (filename.extension, without path) again in the Additional Drivers edit box, separated by spaces.<}0{>Если ошибок не обнаружено, перезапустите Verifier.exe и снова введите имя всех драйверов (имя файла и расширение без пути) в поле Дополнительные драйверы, разделяя их пробелами.<0}

8.     {0>Uncheck all options in Verification Type, then check «Allocation Fault Injection.»<}0{>Снимите все флажки Тип проверки, затем установите флажок Внесение неисправностей размещения.<0}

9.     {0>Click Apply, exit and reboot.<}0{>Нажмите кнопку Применить, выйдите и произведите перезагрузку.<0}

10.  Установка флажка Внесение неисправностей размещения приводит к тому, что ядро периодически возвращает драйверу недопустимые данные и коды ошибок.<0} {0>As you run user tests, your driver should handle the invalid codes gracefully, perhaps by declining user requests or posting error dialogs.<}0{>При выполнении пользовательских тестов драйвер должен соответственно обрабатывать недопустимые коды, например, путем отклонения запросов пользователя или отображения диалогов с сообщениями об ошибках.<0} {0>If your driver tries to use the invalid data or ignores error codes, your application will become unstable and fail.<}0{>Если драйвер пытается использовать недопустимые данные или игнорирует коды ошибок, то приложение станет работать нестабильно, что приведет к отказу.<0} {0>The exact symptoms vary with the application and purpose of the driver.<}0{>Точные признаки зависят от приложения и назначения драйвера.<0} {0>The goal here is to ensure that your driver does not crash or hang the system.<}0{>Цель тестирования – удостовериться, что Ваш драйвер не приводит к сбою или зависанию системы.<0} {0>It is acceptable for applications using your driver to experience intermittent failures, but the system must NOT crash.<}0{>В приложениях, использующих Ваш драйвер, могут возникать периодические сбои, но это не должно приводить к сбою системы.<0}

{0>See http://www.microsoft.com/hwdev/driver/driververify.htm for more information on using the Driver Verifier Tool and diagnosing driver problems.<}0{>Дополнительную информацию по использованию утилиты проверки драйверов и диагностике проблем драйверов можно найти по адресу http://www.microsoft.com/hwdev/driver/driververify.htm .<0}


 


{0>Chapter 2<}0{>Глава 2<0}

{0>Describes the requirements for implementing the Windows Installer service, ensuring that the application can be easily deployed in a corporate environment.<}0{>Describes the requirements for implementing the Windows Installer service, ensuring that the application can be easily deployed in a corporate environment.<0}

{0>Install/Uninstall<}0{>Установка/Удаление<0}

{0>Summary of Install/Uninstall Requirements<}0{>Сводка требований по установке/удалению<0}

{0>Rationale<}0{>Логическое обоснование<0}

{0>Install and uninstall issues are some of the most common sources of application interoperability problems.<}0{>Вопросы установки и удаления являются основными источниками проблем взаимодействия приложений.<0} {0>These requirements help to ensure that the user has successful installation and uninstallation experiences, and that the application co-exists in a friendly way with other applications.<}0{>Эти требования помогают обеспечить успешную установку и удаление пользователем и отсутствие конфликтов данного приложения с остальными.<0}

{0>The Windows Installer service is an operating system component that centrally manages application installation configuration, as well as application uninstall.<}0{>Служба установки Windows Installer – это компонент операционной системы, централизованно управляющий конфигурацией установки приложения, а также его удалением.<0}  {0>Using the Windows Installer service allows the operating system to manage application setup and configuration, which enables the following:<}0{>Использование Windows Installer позволяет операционной системе управлять установкой и конфигурированием приложений, что обеспечивает:<0}

·         {0>Management of reference counting and version checking of shared components, which helps ensure that applications better co-exist with one another.<}0{>Управление подсчетом ссылок и проверкой версий совместно используемых компонентов, что помогает обеспечить лучшее сосуществование приложений.<0}

·         {0>Robust installations and self-repairing applications.<}0{>Устойчивые установки и самовосстанавливающиеся приложения.<0}

·         {0>Reliable and complete uninstall, including correct handling of shared components.<}0{>Надежное и полное удаление, включая корректную обработку разделенных компонентов.<0}

·         {0>Ability to perform installation on secure systems (for non-administrators and non-power users).<}0{>Способность выполнять установку в защищенных системах (для непривилегированных пользователей и пользователей, не являющихся администраторами).<0}

·         {0>Enables applications to make full use of Windows 2000 IntelliMirror™ functionality for policy-based deployment, update, and uninstallation over a network.<}0{>Полное использование приложением возможностей установки, обновления и удаления Windows 2000 IntelliMirror™ по сети на базе политик.<0}

 

{0>The Windows Installer service enables all of this functionality using packages that describe application configurations.<}0{>Windows Installer позволяет использовать все эти возможности с помощью пакетов, описывающих конфигурации приложений.<0} {0>The Windows Installer ships in Windows 2000 and is also available for redistribution on Windows NT 4, Windows 98, and Windows 95.<}0{> Windows Installer поставляется вместе с Windows 2000, а также распространяется с Windows NT 4, Windows 98 и Windows 95.<0}

{0>Customer Benefits<}0{>Преимущества пользователей<0}

{0>End users gain these benefits when your application uses the Windows Installer service:<}0{>Если приложение использует Windows Installer, конечные пользователи получают следующие преимущества:<0}

·         {0>Fewer problems during application setup:<}0{>Уменьшение числа проблем при установке приложения:<0} {0>installation and uninstallation of applications is less likely to affect the performance of another application because reference counting and version checking are properly implemented.<}0{>менее вероятно, что установка и удаление приложений отразится на производительности другого приложения, благодаря надлежащей реализации счетчика ссылок и проверки версии.<0}

·         {0>Self-repair of damaged applications at runtime:<}0{>Самовосстановление испорченных приложений при запуске:<0} {0>When the application is launched, the Windows Installer will check to ensure that the application is properly installed, and if it is not, will automatically repair the application on-the-fly.<}0{>Во время загрузки приложения Windows Installer проверит корректность его установки и, если установка некорректна, динамически восстановит приложение.<0}

·         {0>Transacted install:<}0{>Проведение установки:<0} {0>In the event that the installation is not completed (for example, if there is a network failure), the Windows Installer can roll back to the earlier installed version of the application without error.<}0{>Если установка не завершена (например, если произошел сбой в сети), Windows Installer может вернуться к ранее установленной без ошибки версии приложения.<0}

·         {0>On-demand install of your application.<}0{>Установка приложения по запросу.<0}

 

{0>System administrators in corporate environments also gain these benefits when your application uses the Windows Installer service:<}0{>Если приложение использует службу Windows Installer, системные администраторы в корпоративной среде получают следующие преимущества:<0}

·         {0>Ability to perform installation on secure systems (for non-administrators and non-power users) without having to visit the PC.<}0{>Возможность установки в защищенных системах (для непривилегированных пользователей и пользователей, не имеющих прав администратора) без необходимости посещения конкретного компьютера.<0}

·         {0>A Windows Installer-based package (.msi file) allows the administrator to easily determine what files, and what versions of those files, are being installed.<}0{>Пакет на базе Windows Installer (файл .msi) позволяет администратору легко определить устанавливаемые файлы и их версии.<0} {0>This is especially beneficial for corporations that maintain a list of «known good versions» of shared DLLs and allow installation of applications that require a shared DLL only on the basis of this list.<}0{>Это особенно полезно для организаций, в которых поддерживается список «хороших версий» совместно используемых библиотек DLL и позволено устанавливать только приложения, использующие общие библиотеки DLL из этого списка.<0}

·         {0>The Windows Installer service management APIs can be used with management tools that allow files and application integrity to be remotely checked.<}0{>Интерфейсы API для управления службой Windows Installer могут использоваться с инструментами управления, позволяющими производить удаленную проверку целостности файлов и приложений.<0}

·         {0>Application installation more readily supports roaming users via install on demand and indirection of file paths through the installer API's (reduced dependence on hard paths that may change across machines).<}0{>Установка по требованию и отсутствие привязки к путям с помощью API установки обеспечивает более надежную поддержку приложением пользователей, работающих на нескольких компьютерах, (сокращена зависимость от фиксированных путей, которые могут быть различными на разных компьютерах).<0}

·          {0>Application installation more readily supports mass deployment in organizations using Win2000 software management, and as a result of standard support for customization and unattended install.<}0{>В результате использования управления программным обеспечением Win2000, а также стандартной поддержки настройки и автоматической установки, обеспечивается более надежная поддержка широкомасштабного развертывания приложений в организациях.<0}

 

{0>Requirements<}0{>Требования<0}

1.     {0>Install using a Windows Installer-based package that passes validation testing<}0{>Установка с помощью пакета на базе Windows Installer, прошедшего тест на корректность<0}

2.     {0>Observe rules in componentization<}0{>Соблюдение правил разбивки приложений на компоненты<0}

3.     {0>Identify shared components<}0{>Идентификация совместно используемых компонентов<0}

4.     {0>Install to Program Files by Default<}0{>Установка по умолчанию в каталог Program Files<0}

5.     {0>Support Add/Remove Program Files properly<}0{>Корректная поддержка добавления/удаления программных файлов<0}

6.     {0>Ensure that your application supports advertising<}0{>Поддержка приложением оповещения<0}

7.     {0>Ensure correct uninstall support<}0{>Корректная поддержка удаления<0}

 

{0>References<}0{>Справочная информация<0}

{0>Microsoft Platform SDK:<}0{>Microsoft Platform SDK:<0} {0>Windows Installer Programmer’s Reference<}0{>Руководство программиста Windows Installer<0}

{0>Windows Installer SDK:<}0{>Windows Installer SDK:<0} {0>Internal Consistency Evaluation tool (msival2.exe)<}0{>Утилита оценки внутренней согласованности (msival2.exe)<0}

{0>.CUB file for validation:<}0{>Файл CUB для проверки:<0} {0>http://msdn.microsoft.com/winlogo/downloads.asp <}0{>http://msdn.microsoft.com/winlogo/downloads.asp <0}

{0>How to Comply with Install/Uninstall Requirements<}0{>Соответствие требованиям по установке/удалению<0}

1.   {0>Install using a Windows Installer-based package that passes validation testing<}0{>Установка с помощью пакета на базе Windows Installer, прошедшего тест на корректность<0}

0>Your application must install itself using the Windows Installer service.<}0{>Приложение должно устанавливаться с помощью Windows Installer.<0} {0>To do this, your install must be in the form of a Windows Installer-based package.<}0{>Для этого установка должна быть оформлена в виде пакета на базе Windows Installer.<0} {0>You must validate that the package is properly constructed by running an Internal Consistency Evaluation tool (such as msival2.exe, available in the Windows Installer SDK) in conjunction with the suite of ICEs contained in logo-x86.cub (for x86) and logo-axp.cub (for alpha).<}0{>Корректность построения пакета нужно проверить с помощью утилиты оценки внутренней согласованности (например, msival2.exe, распространяемой с Windows Installer SDK) с набором ICE, содержащихся в файлах logo-x86.cub (для x86) и logo-axp.cub (для alpha).<0} {0>These .CUB files are available at http://msdn.microsoft.com/winlogo/downloads.asp.<}0{>Эти файлы .CUB можно найти по адресу: http://msdn.microsoft.com/winlogo/downloads.asp.<0} {0>You can also use the logo .CUB files in conjunction with ICE tools provided by leading install tool vendors.<}0{>Файлы CUB можно использовать вместе с инструментами ICE ведущих поставщиков утилит установки.<0}

{0>Leading vendors of install tools have, or will have, new versions of their tools to enable easy authoring of Windows Installer-based packages.<}0{>У ведущих поставщиков уже имеются или в скором времени появятся новые версии утилит установки для упрощения разработки пакетов на базе Windows Installer.<0} {0>Contact your tools vendor for more details.<}0{>Более подробную информацию Вы можете получить у своего поставщика утилит.<0} {0>You can also create your own Windows Installer-based package.<}0{>Вы также можете создать собственный пакет на базе Windows Installer.<0} {0>The Microsoft Platform SDK provides a detailed example for implementing a Windows Installer-based package.<}0{>В Microsoft Platform SDK имеется подробный пример реализации пакета на базе Windows Installer.<0}

2.   {0>Observe rules in componentization <}0{>Соблюдение правил разбивки приложений на компоненты<0}

{0>The Windows Installer service always installs and removes an application as monolithic pieces of information referred to as components.<}0{>Windows Installer всегда устанавливает и удаляет приложение как единый участок информации, называемый компонентом.<0} {0>A component can consist of a collection of files, registry keys, shortcuts, or any other information that must be written to the user's computer during the installation.<}0{>Компонент может состоять из набора файлов, параметров реестра, ярлыков или любой другой информации, которая должна записываться на компьютер пользователя в процессе установки.<0} {0>The installer identifies a component by its unique component code GUID.<}0{>Программа установки идентифицирует компонент с помощью его уникального кода GUID.<0} {0>The installer locates the component using a keypath file that belongs to the component.<}0{>Местоположение компонента определяется с помощью файла ключевого пути, принадлежащего этому компоненту.<0} {0>Because components are commonly shared by more than one application or product, developers must correctly organize their applications into a set of components to ensure their application can be managed by the installer.<}0{>Поскольку обычно компоненты используются совместно несколькими приложениями или продуктами, разработчики должны корректно организовывать разбивку приложения на компоненты, чтобы обеспечить управляемость приложения программой установки.<0}  {0>For more details, see «Organizing Applications into Components» in the Windows Installer documentation in the Platform SDK.<}0{>Более подробную информацию можно найти в разделе «Organizing Applications into Components (Компонентная организация приложений)» в документации по Windows Installer в Platform SDK.<0}

{0>To ensure that the removal of one program does not harm any other programs on the system and that the Windows Installer service correctly removes all resources connected with that program, your application must adhere to the following rules:<}0{>Чтобы гарантировать, что удаление одной программы не нарушит работу других программ в системе и что Windows Installer корректно удалит все ресурсы, относящиеся к данной программе, Ваше приложение должно строго придерживаться следующих правил:<0}

·         {0>A single resource must not be shipped as a member of multiple components across multiple products, unless it is isolated as its own component and is flagged as shared in the component table.<}0{>Одиночный ресурс не должен поставляться в качестве элемента набора компонентов в нескольких продуктах, если он не выделен как независимый компонент и не отмечен в таблице компонентов как совместно используемый.<0}

·         {0>All files in a given component must be installed to the same directory.<}0{>Все файлы одного компонента должны устанавливаться в один и тот же каталог.<0} {0>This means files in different directories must be in different components.<}0{>Это означает, что файлы в различных каталогах должны принадлежать различным компонентам.<0}

·         {0>All files that are the targets of advertisable shortcuts must be the KeyPath of a component.<}0{>Все файлы, используемые ярлыками с объявлением, должны представлять собой ключевой путь компонента.<0} {0>This means there can only be one advertised file per component, although many different shortcuts can point to that single file.<}0{>Это означает, что в одном компоненте может быть только один файл с объявлением, хотя указывать на этот файл могут несколько ярлыков.<0}

·         {0>COM servers must be the KeyPath of a component.<}0{>Серверы COM должны быть ключевым путем компонента.<0} {0>This means there can only be one COM server per component.<}0{>Это означает, что на один компонент может быть только один сервер COM.<0} {0>A single file, which can only be in one component, may serve multiple CLSIDs.<}0{>Отдельный файл, находящийся только в одном компоненте, может обслуживать несколько CLSID.<0} {0>However, two files serving different CLSIDs must be in separate components.<}0{>Однако два файла, обслуживающие различные CLSID, должны находиться в различных компонентах.<0}

·         {0>Extension servers must be the KeyPath of the component.<}0{>Серверы расширения должны быть ключевым путем компонента.<0} {0>This means there can only be one Extension server per component.<}0{>Это означает, что на один компонент может приходиться только один сервер расширения.<0}

 

3.   {0>Identify shared components<}0{>Идентификация совместно используемых компонентов<0}

·         {0>If the Windows Installer service determines that a component is shared, it will automatically handle the incrementing and decrementing of reference counting, and if appropriate, removal of components when no other application depends on them.<}0{>Если Windows Installer определяет, что компонент является совместно используемым, он будет автоматически обрабатывать увеличение и уменьшение счетчика ссылок, а при необходимости удалять компоненты, если они не используются ни одним приложением.<0}

·         {0>The Windows Installer service will automatically determine if components are shared with other applications that also use the Windows Installer service.<}0{>Windows Installer автоматически определит, используются ли компоненты другими приложениями, которые также используют Windows Installer.<0}

·         {0>For components that are to be shared with applications that don’t use Windows Installer service, you must flag these components in the component table, so the Windows Installer service knows to also reference count them in a manner that is compatible with legacy install methods.<}0{>Компоненты, которые должны совместно использоваться приложениями, не использующими Windows Installer, должны быть соответствующим образом помечены в таблице компонентов, чтобы служба Windows Installer могла учесть эти ссылки совместимым с наследуемыми методами установки способом.<0} {0>This helps ensure that your application interoperates properly with other applications that do not use the Windows Installer service.<}0{>Это обеспечивает корректное взаимодействие Вашего приложения с другими приложениями, не использующими Windows Installer.<0}

·         {0>Components that are shared with applications that don’t use Windows Installer service need to properly implement the DLLRegisterServer and DLLUnregisterServer entry points if they need to do any registration at install time.<}0{>Компонентам, разделенным приложениями и не использующим службу установки Windows нужно надлежащим способом использовать записи DLLRegisterServer и DLLUnregisterServer, если им нужно произвести какую-либо регистрацию во время установки.<0}  {0>(DLLs which use the Windows Installer should use the registration services provided by the Windows Installer.)<}0{>Динамические библиотеки (DLL), использующие установщик Windows, должны использовать службу регистрации, поддерживаемую установщиком Windows.<0}

{0>Note:<}0{>Замечание:<0} {0>Applications are not allowed to update files that are protected by System File Protection on Windows 2000. See Chapter 3, «Component Sharing» for more details.<}0{>Приложения не могут обновлять файлы, защищенные в системе Windows 2000 с помощью Защиты системных файлов. Более подробную информацию можно найти в главе 3, «Совместное использование компонентов».<0}

4.   {0>Install to Program Files by default<}0{>Установка по умолчанию в каталог Program Files<0}

{0>By default, your application must install into an appropriate subdirectory where the current user’s program files are stored.<}0{>По умолчанию приложение должно устанавливаться в соответствующий подкаталог, где хранятся программные файлы текущего пользователя.<0} {0>This folder is represented by the ProgramFilesFolder property in the Windows Installer-based package.<}0{>Этот каталог представляется свойством ProgramFilesFolder в пакете на базе Windows Installer.<0} {0>(The ProgramFilesFolder property is a variable that exposes the path to the Program Files folder, and the Windows Installer sets that variable appropriately on all Windows platforms.)<}0{>(Свойство ProgramFilesFolder – это переменная, в которой хранится путь к каталогу Program Files, и Windows Installer устанавливает для этой переменной соответствующее значение на всех платформах Windows.)<0}  {0>On English systems, this folder is often «C:\Program Files».<}0{>В английских версиях систем чаще всего это каталог «C:\Program Files».<0} {0>However, do NOT hardcode that path, as it is not universal.<}0{>Но НЕ ХРАНИТЕ этот путь в самом приложении: он не является универсальным.<0}

{0>Exception:<}0{>Исключение:<0} {0>If you are upgrading a previously installed version of your application, it is acceptable to default to the directory where that version exists.<}0{>Если Вы производите обновление предыдущей версии приложения, допускается использовать по умолчанию каталог, в котором установлена эта версия.<0}

{0>Considerations for shared components <}0{>Рекомендации относительно разделяемых компонентов<0}

{0>In some cases shared component must be placed in locations other than the application directory.<}0{>В некоторых случаях разделяемый компонент должен помещаться в каталог, отличный от каталога приложения.<0} {0>See chapter 3, «Component Sharing» for full details.<}0{>Полную информацию Вы можете найти в главе 3 «Совместное использование компонентов».<0}

5.   {0>Support Add/Remove Programs properly<}0{>Корректная поддержка добавления/удаления программ<0}

{0>Your application must supply all the information in the following table so that Add/Remove Programs in the Control Panel can obtain information about the application as needed.<}0{>Чтобы функция Добавления/удаления программ в Панели управления могла получить необходимую информацию о приложении, Ваше приложение должно занести всю информацию в следующую таблицу.<0} {0>You can set these values using properties in the Windows Installer-based package.<}0{>Эти значения можно установить с помощью свойств пакета на базе Windows Installer.<0} {0>Setting these properties will automatically write the corresponding values in the registry under<}0{>Задание значений этих свойств автоматически приведет к записи соответствующих значений в реестр в раздел<0}

{0>HKEY_LOCAL_MACHINE<}0{>HKEY_LOCAL_MACHINE<0}

  {0>\Software<}0{>\Software<0}

    {0>\Microsoft<}0{>\Microsoft<0}

      {0>\Windows<}0{>\Windows<0}

        {0>\CurrentVersion<}0{>\CurrentVersion<0}

          {0>\Uninstall<}0{>\Uninstall<0}

            {0>\{ProductCode}<}0{>\{ProductCode}<0}

 

{0><}0{>Свойство<0}

{0><}0{>Соответствующее значение реестра<0}

{0><}0{>Содержит<0}

{0>ProductName<}0{>ProductName<0}

{0>DisplayName<}0{>DisplayName<0}

{0><}0{>Отображаемое имя приложения.<0}

{0>ARPINSTALLLOCATION<}0{>ARPINSTALLLOCATION<0}

{0>InstallLocation<}0{>InstallLocation<0}

{0><}0{>Полный путь, по которому расположено приложение (папка или файл .exe).<0}

{0>Manufacturer<}0{>Manufacturer<0}

{0>Publisher<}0{>Publisher<0}

{0><}0{>Распространитель/разработчик приложения.<0}

{0>ProductVersion<}0{>ProductVersion<0}

{0>VersionMajor<}0{>VersionMajor<0}

{0><}0{>Основной номер версии приложения.<0}

{0>ProductVersion<}0{>ProductVersion<0}

{0>VersionMinor<}0{>VersionMinor<0}

{0><}0{>Номер расширения версии.<0}

{0>Note:<}0{>Замечание:<0} {0>Property names are case-sensitive.<}0{>Имена свойств учитывают регистр.<0}

 

{0>You can also provide additional properties to present in Add/Remove Programs if you like, such as product ID, online support information, etc. See the platform SDK for full details.<}0{>Вы можете также определять дополнительные свойства для представления в функции Добавления/удаление программ, такие как идентификатор продукта (ID), информация о его поддержке и т.д. Полную информацию можно найти в Platform SDK.<0}

6.   {0>Ensure that your application supports advertising<}0{>Поддержка приложением оповещения<0}

{0>«Advertisement» is the notion of application availability in the absence of the application’s files being installed.<}0{>«Оповещение» - это извещение о доступности приложения при отсутствии установленных файлов этого приложения. <0} {0>Advertising allows the application to be deployed using software management tools.<}0{>Оповещение позволяет развертывать приложения с помощью утилит управления программным обеспечением.<0}

{0>All Windows Installer-based packages must be advertisable in a manner that operating system entry points, such as shortcut activation and file activation, can trigger install on demand.<}0{>Все пакеты на базе Windows Installer должны иметь возможность оповещения таким образом, чтобы точки входа в операционную систему, такие как активация ярлыка или файла, могли активизировать установку по требованию.<0} {0>In order to support advertisement at the operating system level, the following tables in the Windows Installer-based package must be populated with advertising data:<}0{>Для поддержки оповещения на уровне операционной системы следующие таблицы в пакете на базе Windows Installer должны быть заполнены данными оповещения:<0} {0>shortcut, class, extension, icon, MIME, ProgID, TypeLib, and Verb.<}0{>shortcut, class, extension, icon, MIME, ProgID, TypeLib и Verb.<0}


7.   {0>Ensure correct uninstall support<}0{>Корректная поддержка удаления<0}

{0>Your application’s Windows Installer-based package must correctly and fully uninstall the application.<}0{>Пакет приложения на базе Windows Installer должен корректно и полностью удалять приложение.<0} {0>In a package that follows component rules and uses only native Windows Installer actions to modify the computer, this capability is provided automatically.<}0{>Такая возможность поддерживается автоматически в пакете, следующем правилам для компонентов и использующем только стандартные действия Windows Installer для настройки компьютера.<0}

{0>However, if your Windows Installer-based package includes custom actions, you will need to proactively ensure that your application properly uninstalls.<}0{>Однако если Ваш пакет на базе Windows Installer включает нестандартные действия, нужно будет предварительно убедиться в корректности удаления приложения.<0} {0>Except as noted below, your application must remove the following:<}0{>За приведенным ниже исключением, приложение должно удалить следующее:<0}

·         {0>All non-shared application files and folders<}0{>Все файлы и каталоги приложения, не являющиеся совместно используемыми<0}

·         {0>Registry entries, except for keys that might be shared by other programs<}0{>Записи реестра, за исключением тех, которые могут использоваться другими программами<0}

·         {0>All shortcuts from the Start menu that the application created at install-time<}0{>Все ярлыки из меню Пуск, созданные приложением при установке<0}

·         {0>The uninstaller itself<}0{>Саму программу удаления<0}

{0>Tip:<}0{>Подсказка:<0} {0>If your application creates temporary files that should be removed during uninstallation, create a zero-length (0) file with the same name at installation time.<}0{>Если приложение создает временные файлы, которые должны удаляться в процессе удаления приложения, создайте во время установки файл нулевой длины с таким же именем.<0} {0>Examples of such files would be .gid files created by Help.<}0{>Примерами таких файлов могут служить файлы .gid, создаваемые Справкой.<0}

 

{0>Exception:<}0{>Исключение:<0} {0>The following should remain on the hard disk:<}0{>На жестком диске должны оставаться:<0}

·         {0>«Core» files the must not be uninstalled.<}0{>Файлы ядра.<0} {0>See http://www.veritest.com/ftp/core.htm for the most up-to-date, complete list.<}0{>Их полный самый новый список можно найти по адресу http://www.veritest.com/ftp/core.htm.<0} {0>The core component list exists for historical reasons and is maintained to ensure compatibility with legacy applications.<}0{>Список компонентов ядра существует по историческим причинам и поддерживается для обеспечения совместимости с приложениями для предыдущих версий.<0} {0>Microsoft will add no new files to this list.<}0{>Компания Microsoft не будет добавлять в этот список новые файлы.<0} {0>On Windows 2000 and later, applications should rely on System File Protection for information on what system files to update or uninstall.<}0{>В системе Windows 2000 и последующих версиях для получения информации о том, какие системные файлы должны быть обновлены или удалены, приложения должны обращаться к Защите системных файлов.<0} {0>See Chapter 3, «Component Sharing.»<}0{>См. главу 3, «Совместное использование компонентов».<0}

·         {0>User data files.<}0{>Файлы данных пользователя.<0}

·         {0>Resources that other programs might use, such as sharable DLLs, sharable fonts, and sharable registry entries.<}0{>Ресурсы, которые могут использоваться другими программами, например, совместно используемые DLL, шрифты и записи реестра.<0}

·         {0>If you are not sure whether removing a DLL might harm other applications, it is better to leave it behind.<}0{>Если Вы не уверены в том, что удаление файла DLL не нарушит работу других приложений, лучше не удалять его.<0} {0>However, you must explain in the Vendor Questionnaire everything you leave behind.<}0{>Однако все. Что не удаляется, должно быть описано в Анкете поставщика.<0}

 

{0>How to Pretest Applications for Install/Uninstall Requirements<}0{>Предварительное тестирование приложения на соответствие требованиям по установке/удалению.<0}

{0>To pretest a Windows Installer-based package:<}0{>Тестирование пакета на базе Windows Installer:<0}

·         {0>Use an Internal Consistency Evaluation tool with the logo .CUB file(s) (either logo-x86.cub or logo-axp.cub) to check the validity of your application’s Windows Installer-based package.<}0{>Используйте утилиту Оценки внутренней согласованности и файлы .CUB (x86.cub или logo-axp.cub) для проверки корректности пакета на базе Windows Installer.<0} {0>The .CUB files are available at http://msdn.microsoft.com/winlogo/downloads.asp.<}0{>Файлы .CUB можно получить по адресу http://msdn.microsoft.com/winlogo/downloads.asp.<0}

·         {0>Use Windows 2000 software management tools to deploy the application to both users and to machines.<}0{>С помощью утилиты управления программным обеспечением Windows 2000 разверните приложения как на компьютерах, так и для пользователей.<0} {0>Verify all the activation paths work correctly when the application is advertised.<}0{>Убедитесь, что все пути активации корректно работают при оповещении приложения.<0}

 

{0>To pretest correct setup actions:<}0{>Проверка правильности установки:<0}

·         {0>Use the Windows 2000 application deployment tools to publish the application.<}0{>Для публикации приложения используйте инструменты развертывания приложений Windows 2000.<0} {0>Verify the application can be installed from Add/Remove Programs, Add from the corporate network.<}0{>Убедитесь, что приложение может быть установлено из корпоративной сети с помощью команды Добавить в Добавлении/удалении программ.<0}


·         {0>Use the Windows 2000 application deployment tools to assign the application to a user.<}0{>С помощью утилит развертывания приложений Windows 2000 назначьте приложение пользователю.<0} {0>Log on as that user to a machine that did not previously have the application installed.<}0{>Зарегистрируйтесь в качестве этого пользователя на компьютере, на котором приложение не установлено.<0} {0>Verify after the user logs on that the application is correctly advertised, i.e., it looks like it is fully installed on the machine and all activation paths (shortcuts and file extensions, for example) trigger an installation.<}0{>Убедитесь, что после регистрации этого пользователя происходит корректное оповещение об этом приложении, как будто приложение установлено и все пути активации (например, ярлыки и расширения файлов) активизируют его установку.<0}

·         {0>Use the Windows 2000 application deployment tools to assign the application to a machine that does not currently have the application installed.<}0{>С помощью инструментов развертывания приложений Windows 2000 назначьте приложение компьютеру, на котором в данный момент это приложение не установлено.<0} {0>Verify after the machine is booted the application is fully installed.<}0{>После загрузки компьютера убедитесь, что приложение полностью установлено.<0}

·         {0>Undeploy the application in the tests above.<}0{>Удалите приложение после описанных выше тестов.<0} {0>Verify Windows 2000 software management can silently uninstall the app from the user/machine.<}0{>Убедитесь, что функции управления программным обеспечением Windows 2000 могут незаметно удалить это приложение для пользователя/компьютера.<0}

·         {0>Install the application for more than one user on a given machine.<}0{>Установите приложение для нескольких пользователей на одном компьютере.<0} {0>Verify each user can have their own settings and also uninstalling the application for one user does not affect the others.<}0{>Убедитесь, что каждый пользователь может установить собственные настройки, и что удаление приложения для одного пользователя не воздействует на работу других пользователей.<0}

·         {0>Test the install and uninstall of your package under each of these Windows Installer UI modes:<}0{>Проверьте установку и удаление Вашего пакета в следующих режимах пользовательского интерфейса Windows Installer:<0}

·         {0>Full<}0{>Полный<0}

·         {0>Basic (Simple progress and error handling)<}0{>Основной (простая индикация установки и обработка ошибок)<0}

·         {0>None (completely silent installation, no UI)<}0{>Никакой (незаметная установка без интерфейса пользователя)<0}

{0>You can activate different UI modes by launching your package with the /q switch.<}0{>Вы можете задавать различные режимы интерфейса, запуская пакет с параметром /q.<0} {0>(Default is mode full.<}0{>По умолчанию используется полный режим.<0} {0>Specify b=basic, n=none)<}0{>Для других режимов укажите b=основной, n=никакой)<0}

 

{0>To pretest uninstallation:<}0{>Предварительное тестирование удаления:<0}

1.     {0>Take a snapshot of a computer’s directory tree, install the application, uninstall the application, and take another snapshot.<}0{>Зафиксируйте состояние дерева каталогов компьютера, установите приложение, удалите его и снова зафиксируйте состояние дерева каталогов.<0}

2.     {0>Verify that the snapshots before the install and after the uninstall are the same, except for the following which should be left on the machine:<}0{>Убедитесь, что состояние дерева до установки и после удаления приложения одинаково, за исключением того, что должно остаться на компьютере:<0} {0>user created files, core files, and shared components that are still required by other programs.<}0{>созданные пользователем файлы, файлы ядра и совместно используемые компоненты, необходимые другим программам.<0}

{0>To pretest interop with other apps that share components:<}0{>Предварительное тестирование взаимодействия с другими приложениями, совместно использующими компоненты:<0}

{0>To ensure that your application interoperates well with other applications (that do not use the Windows Installer) that share some of the same components that your application uses, you should test and verify each of the following scenarios:<}0{>Чтобы убедиться, что Ваше приложение корректно взаимодействует с другими приложениями (не использующими Windows Installer), которые используют некоторые компоненты, используемые также Вашим приложением, следует воспроизвести каждый из следующих сценариев:<0}

 

 

{0>Scenario 1 <}0{>Сценарий 1 <0}

{0>Scenario 2<}0{>Сценарий 2<0}

{0>Scenario 3<}0{>Сценарий 3<0}

{0>Scenario 4<}0{>Сценарий 4<0}

{0><}0{>Шаг 1<0}

{0>Install your app<}0{>Установите Ваше приложение<0}

{0>Install your app<}0{>Установите Ваше приложение<0}

{0>Install «other» app<}0{>Установите «другое» приложение<0}

{0>Install «other» app<}0{>Установите «другое» приложение<0}

{0><}0{>Шаг 2<0}

{0>Install «other» app<}0{>Установите «другое» приложение<0}

{0>Install «other» app<}0{>Установите «другое» приложение<0}

{0>Install your app<}0{>Установите Ваше приложение<0}

{0>Install your app<}0{>Установите Ваше приложение<0}

{0><}0{>Шаг 3<0}

{0><}0{>Удалите Ваше приложение<0}

{0><}0{>Удалите «другое» приложение<0}

{0><}0{>Удалите «другое» приложение<0}

{0><}0{>Удалите Ваше приложение<0}

{0><}0{>Шаг 4<0}

{0>Verify «other» app still works<}0{>Убедитесь, что «другое» приложение по-прежнему работает<0}

{0>Verify your app still works<}0{>Убедитесь, что Ваше приложение по-прежнему работает<0}

{0>Verify your app still works<}0{>Убедитесь, что Ваше приложение по-прежнему работает<0}

{0>Verify «other» app still works<}0{>Убедитесь, что «другое» приложение по-прежнему работает<0}

 


 

 

{0>Chapter 3<}0{>Глава 3<0}

{0>Component Sharing<}0{>Совместное использование компонентов<0}

{0>Describes the requirements for handling shared components so that applications better coexist with one another.<}0{>Describes the requirements for handling shared components so that applications better coexist with one another.<0}

{0>Summary of Component Sharing Requirements<}0{>Сводка требований к совместному использованию компонентов<0}

{0>Rationale<}0{>Логическое обоснование<0}

{0>Windows-based applications can share code, as well as application and component state in the registry, application specific data in the file system, and Windows APIs which expose global namespaces.<}0{>Приложения Windows могут совместно использовать код, а также состояние приложения и компонента в реестре, специфические для приложения данные в файловой системе и функции Windows API, работающие с глобальными пространствами имен.<0}  {0>Sharing allows for the efficient leverage of limited hardware resources and reduces the exposed front that Quality Assurance groups must test.<}0{>При совместном использовании учитываются ограниченные аппаратные ресурсы и уменьшается объем тестирования для групп Проверки качества.<0} 

{0>However, there are costs to sharing.<}0{>Однако совместное использование обладает и недостатками.<0} {0>Sharing causes applications to become interdependent upon one other, which introduces an element of fragility.<}0{>Совместное использование делает приложения зависимыми друг от друга, что отражается на надежности.<0} {0>In the extreme, applications that once worked will mysteriously start functioning oddly, or even fail.<}0{>В крайнем случае, ранее работавшие приложения могут работать непредсказуемо или даже привести к сбою.<0} {0>Typically, an application is dependent on a particular version or implementation of a shared component.<}0{>Обычно приложение использует определенную версию или реализацию совместно используемого компонента.<0} {0>If that shared component is upgraded (or downgraded) as a result of installing another application, the former application may break.<}0{>Если версия совместно используемого компонента повышается (или понижается) в результате установки другого приложения, это может привести к нарушению работы ранее установленного приложения.<0} {0>This condition is often referred to as «DLL Hell.»<}0{>Это состояние называется «DLL Hell.» (Ад динамических библиотек)<0}

{0>Successful global sharing requires that any shared component behave exactly like previous versions of that component to avoid this problem.<}0{>Для успешного глобального совместного использования необходимо, чтобы все совместно используемые компоненты вели себя точно так же, как и их предыдущие версии.<0} {0>In practice, however, 100% backward compatibility is difficult, if not impossible, to achieve because:<}0{>Однако на практике трудно, а иногда невозможно, достичь 100%-ой совместимости с предыдущими версиями, поскольку:<0}

·         {0>It is usually not feasible to test all configurations in which the shared component may be used.<}0{>Обычно невозможно протестировать все конфигурации, в которых может использоваться компонент.<0}

·         {0>Component «functionality» is not easily defined.<}0{>«Функциональность» компонента довольно сложно определить.<0} {0>Applications may become dependent on unintended side effects that are not considered part of the core «functionality» of the component.<}0{>Приложения могут становиться зависимыми от непредусмотренных побочных эффектов, которые не являются частью «функциональности» ядра компонента.<0}  {0>For example, a component author may choose to fix a «bug» in the component, which another application has unknowingly (or knowingly) become dependent on.<}0{>Например, автор компонента может устранить в компоненте ошибку, от которой преднамеренно или случайно зависело другое приложение.<0} 

·         {0>The sheer volume of applications that use the component exacerbates the problem.<}0{>Большое количество программ, использующих такой компонент, дополнительно обостряет проблему.<0}

 

{0>Windows 2000 and Windows 98 Second Edition enable a new form of sharing called side-by-side sharing which minimizes this application fragility.<}0{>В Windows 2000 и Windows 98 Second Edition предлагается новая форма совместного использования, называемая смежным совместным использованием, которая повышает надежность приложения.<0} {0>Side-by-side sharing enables multiple versions of the same COM or Win32 component to run at the same time in memory.<}0{>Смежное совместное использование позволяет нескольким версиям одного и того же компонента COM или Win32 одновременно работать в памяти.<0} {0>This means applications can use the specific components that they were designed for and tested with, even if another application requires a different version of the same component.<}0{>Это означает, что приложения могут использовать специфические компоненты, для которых они разработаны и протестированы, даже если для другого приложения необходима другая версия того же компонента.<0} {0>This allows developers to build more reliable applications because developers can choose the version of the component they will use for their application, independent of the other applications on the system.<}0{>Это позволяет разработчикам создавать более надежные приложения, поскольку они могут выбирать версию компонента для своего приложения независимо от прочих приложений в системе.<0}


{0>Side-by-side sharing requires the use of side-by-side components, which are ordinary COM or Win32 components, except that they:<}0{>Для смежного совместного использования необходимо использование смежных компонентов, которые представляют собой обычные компоненты COM или Win32, за тем исключением, что они:<0}

·         {0>Are installed into the application directory rather than the system directory.<}0{>Устанавливаются в каталог приложения, а не в системный каталог.<0}

·         {0>Must be registered properly with the system (as described later in this chapter) so they won’t conflict with other versions of the component that may exist.<}0{>Должны быть корректно зарегистрированы в системе (как описано далее в этой главе), чтобы не конфликтовать с другими версиями компонентов, которые могут быть установлены.<0}

{0>Side-by-side components are isolated to a specific application and are not globally shared across all applications:<}0{>Смежные компоненты выделяются в отдельные приложения и не используются глобально всеми приложениями:<0}

·         {0>A side-by-side component can run safely «side-by-side» with a different version of the same component that is installed elsewhere on the system.<}0{>Смежные компоненты могут благополучно работать смежно с другими версиями того же самого компонента, установленного в системе.<0} {0>If another application on the system requires a different version, your application will be unaffected and both applications will run with their respective versions of the component.<}0{>Если другому приложению в системе необходима иная версия компонента, это не коснется Вашего приложение, и оба приложения будут работать с собственными версиями компонента.<0}

·         {0>In the event another application installs a new version of a component on the system, your version of that component will remain untouched since you installed it into your application directory.<}0{>Если какое-либо приложение установит в системе более новую версию компонента, Ваша версия этого компонента останется нетронутой, поскольку она установлена в каталоге Вашего приложения.<0} {0>Your application will continue to use the same version of the component that you shipped with your application, while the other application will use its version.<}0{>Ваше приложение будет по-прежнему использовать ту же версию компонента, которая была установлена вместе с ним, в то время как другое приложение будет использовать собственную версию компонента.<0} {0>Both versions can exist in memory at the same time.<}0{>Обе версии могут находиться в памяти одновременно.<0}

{0>The following chart compares the traditional «global sharing» method with side-by-side sharing.<}0{>В следующей таблице проводится сравнение традиционного метода «глобального совместного использования» со смежным совестным использованием.<0}

 

{0>Global Sharing<}0{>Глобальное совместное использование<0}

{0><}0{>Смежное совместное использование<0}

{0><}0{>Необходима временная последовательность в интерфейсе и поведении.<0} {0><}0{>Нужно тестировать совместимость с предыдущими версиями.<0}

{0><}0{>Интерфейс и поведение могут меняться со временем.<0}

{0><}0{>Все версии могут/должны использовать одно и тоже состояние.<0} {0><}0{>(Реестр и пр.)<0}

{0>Requires isolation of state by component version and optionally, by application using the component.<}0{>Необходима изоляция состояния компонента по его версии, и (необязательно) по приложению, использующему этот компонент.<0}

{0><}0{>Все приложения используют «самую последнюю версию» компонента.<0}

{0><}0{>Приложения выбирают, какую версию компонента они должны использовать.<0}

{0><}0{>Устанавливается в глобальный каталог, например, в системный.<0}

{0><}0{>Устанавливается в каталог приложения.<0}

{0><}0{>Активация по абсолютному имени (имени файла в системном каталоге или полному пути к файлу).<0}

{0><}0{>Активация по относительному имени в зависимости от запущенного приложения.<0}

{0>Upgrading / bug fixing the component simply requires replacing the single globally shared component.<}0{>Для обновления/устранения ошибок в работе компонента необходимо просто заменить единственный совместно используемый компонент.<0}

{0><}0{>Обновление и устранение ошибок в работе компонента становится заботой разработчика приложения.<0}

 

 {0>Customer Benefits<}0{>Преимущества пользователей<0}

·         {0>Application writers can safely use your components without fear of some other application overwriting them.<}0{>Разработчики приложений могут благополучно использовать Ваши компоненты, не боясь того, что другое приложение заменит их.<0} {0>The main cause of «DLL Hell» is eliminated.<}0{>Устраняется основная причина проблемы «DLL Hell».<0}

·         {0>Customers can safely install and reliably run multiple applications that require different versions of the same shared component.<}0{>Пользователи могут благополучно устанавливать и запускать несколько приложений, для которых требуются различные версии одного и того же совместно используемого компонента.<0}

·         {0>Customers can update applications independently of each other, without fear of impacting existing applications.<}0{>Пользователи могут обновлять приложения независимо друг от друга, не боясь нарушить работу существующих приложений.<0}

·         {0>Customers will be able to install your component without requiring a reboot, even if another application is using a different version of your component. <}0{>Пользователи смогут устанавливать Ваши компоненты без перезагрузки компьютера, даже если другое приложение использует иную версию Вашего компонента.<0}

 


{0>Requirements<}0{>Требования<0}

1.     {0>On Windows 2000 do not attempt to replace files that are protected by System File Protection.<}0{>Отсутствие попыток перемещения файлов, защищенных с помощью Защиты системных файлов, в системе Windows 2000.<0}

2.     {0>Component producers:<}0{>Производителям компонентов<0} {0>Build side-by-side components.<}0{>следует разрабатывать смежные компоненты.<0}

3.     {0>Application developers:<}0{>Разработчикам приложений<0} {0>Consume and install side-by-side components<}0{>следует использовать и устанавливать смежные компоненты<0}

4.     {0>Install any non side-by-side shared files to the correct locations<}0{> Установка совместно используемых файлов, не являющихся смежными, в корректные каталоги <0}

 

{0>References<}0{>Справочная информация<0}

{0>Forthcoming whitepaper:<}0{>Ожидаемое официальное издание:<0} {0>«Implementing Side-by-Side Component Sharing in Applications»<}0{>«Использование совместного использования смежных компонентов в приложениях»<0}

 

 

{0>How to Comply with Component Sharing Requirements<}0{>Соответствие требованиям по совместному использованию компонентов <0}

1.   {0>On Windows 2000 do not attempt to replace files that are protected by System File Protection<}0{>Отсутствие попыток перемещения файлов, защищенных с помощью Защиты системных файлов, в системе Windows 2000 файлы <0}

{0>Your application must not attempt to replace any Windows 2000 files that are protected by System File Protection (SFP).<}71{>Приложение не должно предпринимать попытки замены каких-либо файлов Windows 2000, защищенных с помощью Защиты системных файлов (SFP).<0} {0>To ensure that you do not invoke SFP, call SfcIsFileProtected when installing any file you did not create.<}0{>Чтобы гарантировать, что Вы не активизируете SFP, во время установки всех файлов, создателем которых Вы не являетесь, вызывайте функцию SfcIsFileProtected.<0} {0>The Windows Installer service version 1.1 automatically does this for you.<}0{>Служба установки Windows Installer версии 1.1 сделает это за Вас автоматически.<0}

{0>Protected files include the following files that ship on the Windows 2000 CD:<}0{>В число защищенных входят следующие файлы, поставляемые на компакт-диске Windows 2000:<0}

·         {0>Most .SYS, .DLL, .EXE and .OCX files.<}0{>Почти все файлы .SYS, .DLL, .EXE и .OCX.<0}

·         {0>The following fonts:<}0{>Следующие шрифты:<0} {0>micross.ttf, tahoma.ttf, tahomabd.ttf; fixedsys.fon, dosapp.fon, modern.fon, script.fon and vgaoem.fon<}0{>micross.ttf, tahoma.ttf, tahomabd.ttf; fixedsys.fon, dosapp.fon, modern.fon, script.fon и vgaoem.fon<0}

{0>Note, some redistributable files, such as specific versions of Microsoft Foundation Classes (MFC) DLLs, are installed by Windows 2000 and are protected by SFP.<}0{>Обратите внимание, что некоторые файлы, которые могут поставляться с Вашим приложением, например, определенные версии Microsoft Foundation Classes (MFC) DLL, устанавливаются Windows 2000 и защищаются SFP.<0}

{0>Protected files form the core of the operating system and it is essential for system stability that the proper versions be maintained.<}0{>Защищенные файлы составляют ядро операционной системы, а для стабильной работы системы необходима поддержка соответствующих версий.<0} {0>These files can only be updated via Service Packs, operating system upgrades, QFE hotfixes, and Windows Update.<}0{>Обновление этих файлов можно выполнить только с помощью Пакетов обновлений, обновлений операционной системы, QFE-исправлений и пакета Windows Update.<0} {0>Applications cannot replace them, and attempting to replace these files by means other than those listed above will result in the files being restored by the System File Protection feature (see below).<}0{>Приложения не могут заменить эти файлы, а попытка заменить их другими средствами, отличными от указанных выше, приведет к тому, что они будут восстановлены Защитой системных файлов (см. ниже).<0}

{0>If your application requires newer versions of these components, your application must update these components using an approved Microsoft Service Pack that installs the required versions.<}0{>Если Вашему приложению необходимы новые версии этих компонентов, оно должно обновить эти компоненты с помощью утвержденного Пакета обновлений Microsoft, который устанавливает необходимые версии.<0}

{0>About System File Protection:<}0{>О Защите системных файлов:<0}

{0>System File Protection is a feature of Windows 2000 which prevents the replacement of essential system files.<}0{>Защита системных файлов - это функция Windows 2000, которая предотвращает замену важных системных файлов.<0}  {0>SFP runs as a background process on Windows 2000 and monitors the files listed in the preceding section.<}0{>SFP работает в фоновом режиме в системе Windows 2000 и следит за файлами, перечисленными в предыдущем разделе.<0} {0>When SFP detects that a protected file has been changed, it restores the original.<}0{>Если SFP обнаруживает, что защищенный файл был изменен, она восстанавливает оригинал.<0}

{0>The following code shows how to check if a file (in this case «ntdll.dll») is protected by SFP.<}100{>В следующем коде показано, как определить, защищен ли файл (в данном случае «ntdll.dll») с помощью SFP.<0} {0>Note that SfcIsFileProtected is Unicode-only and requires a fully qualified path.<}100{>Обратите внимание, что функция SfcIsFileProtected определена только для Unicode, и для нее необходимо указать полностью определенный путь.<0}

SHGetFolderPath(NULL,CSIDL_SYSTEM, NULL, 0, szSystemDir);

PathAppend(szSystemDir,"ntdll.dll");

MultiByteToWideChar(CP_ACP, 0, szSystemDir, -1, wzFileName, 265);

 

if ( SfcIsFileProtected(wzFileName) )

   MessageBox(hWnd,szProtected,szSystemDir,MB_OK);

else

   MessageBox(hWnd,szNotProtected,szSystemDir,MB_OK);

 

2.   {0>Component producers:<}100{>Производителям компонентов<0} {0>Build side-by-side components<}100{>следует разрабатывать смежные компоненты<0}

{0>Authors writing new redistributable components must use side-by-side sharing techniques so their components can be installed into the application directory.<}0{>Авторам, создающим новые распространяемые компоненты, необходимо использовать технологии разделения смежных компонентов с тем, чтобы эти компоненты можно было установить в каталог приложения.<0} 

{0>«Side-by-side» means version 1 of the component runs in one process while version 2 runs in another process.<}0{>Термин «смежные» означает, что версия 1 данного компонента работает в одном процессе, в то время как версия 2 работает в другом процессе.<0} {0>This requires each version to isolate its state so that it doesn’t conflict with other versions.<}0{>Состояние каждой версии должно быть изолировано, чтобы она не вступала в противоречие с другими версиями.<0} {0>The rules below will help ensure your components can run in a side-by-side scenario.<}0{>Приведенные ниже правила помогут гарантировать работу Ваших компонентов по сценарию смежных.<0} {0>Most ordinary components will need only minor modifications to meet these requirements.<}0{>В большинстве случаев в обычные компоненты необходимо внести незначительные изменения, чтобы они соответствовали этим требованиям.<0}

{0>To build a side-side component:<}0{>Для создания смежного компонента:<0}

·         {0>Do not register full path names for COM registrations.<}0{>Не регистрируйте полные имена путей для регистраций COM.<0} {0>The operating system will find any dependent components in the application directory.<}0{>Операционная система найдет все зависимые компоненты в данном каталоге приложения.<0}

·         {0>If COM meta data (such as threading model) changes between versions, expose a new GUID in the new version.<}0{>Если метаданные COM (например, последовательная модель) отличаются в разных версиях, откройте в новой версии новый GUID.<0}

·         {0>Typelibs must be contained within your DLL instead of as a separate file.<}0{>Библиотеки типов должны содержаться в Вашей DLL, а не в отдельном файле.<0} {0>Use LoadTypeLib and not LoadRegTypeLib to load typelibs.<}0{>Для загрузки библиотек типов используйте функцию LoadTypeLib, а не LoadRegTypeLib.<0}

·         {0>You must reference count GUIDs:<}0{>Необходимо следить за числом GUID:<0} {0>Uninstall of a side-by-side component should not remove its GUIDs from the registry because another app on the system using this component could be dependent on it.<}0{>Удаление смежного компонента не должно удалять его GUID из реестра, так как другое приложение, использующее этот компонент, может зависеть от него.<0} 

·         {0>Registry settings must be per version.<}0{>Настройки реестра должны быть определены для каждой версии.<0}  {0>For example, store your registry state in keys with the following naming convention <}0{>Например, храните состояние реестра в параметрах с использованием следующих условных обозначений имен <0}

HKCU\MyCompany\MyComponent\VersionXXXX\

 

·         {0>Other global stores must be per version if the data changes across versions:<}0{>Другие глобальные хранилища должны быть определены для каждой версии, если данные в разных версиях разные:<0}

·         Для каждой версии данного компонента необходимо разработать различные структуры совместного использования данных, такие как файлы распределенной памяти, переключатели, именованные каналы и аппаратные драйверы, чтобы различные версии этого компонента могли работать одновременно.<0}

·         {0>Use of memory mapped files and shared files must either be separated per component version or have version keys within the file so that different versions of the component can access them at the same time.<}0{>Файлы распределенной памяти и совместно используемые файлы необходимо использовать либо отдельно для каждой версии компонента, либо иметь ключи версии внутри файла, с тем чтобы различные версии данного компонента могли получать к ним доступ одновременно.<0}

 

{0>Note:<}0{>Замечание:<0} {0>Side-by-side sharing is supported in Windows 2000 and Windows 98 Second Edition.<}0{>Совместное использование смежных компонентов поддерживается в системе Windows 2000 и Windows 98 Second Edition.<0} {0>For previous Windows operating systems, side-by-side activation is not supported.<}0{>Для предыдущих версий операционной системы Windows активизация смежных компонентов не поддерживается.<0} {0>However, a side-by-side DLL can be written so that it installs on down-level platforms into the system directory, and functions in a global-sharing (backward compatible) fashion.<}0{>Однако смежная DLL может быть написана так, чтобы она устанавливалась на платформах более низкого уровня в системном каталоге и работала в форме глобального совместного использования (обратная совместимость).<0}  {0>Side-by-side DLLs must be installed to the system directory on these platforms, and in the application directory on Windows 2000 and Windows 98 Second Edition.<}0{>Смежные DLL должны быть установлены в системном каталоге на этих платформах и в каталоге приложения в Windows 2000 и Windows 98 Second Edition.<0} {0>Applications must dynamically check the operating system version to determine which sharing technique to use.<}0{>Приложения должны динамически проверять операционную систему, чтобы определить, какую технологию совместного использования необходимо использовать.<0} {0>The following code checks if side-by-side sharing is supported:<}0{>В приведенном ниже коде выполняется проверка, поддерживается ли совместное использование смежных компонентов:<0}


 

BOOL bPlatformSupportsSideBySide(void)

{

    OSVERSIONINFOEX osviex ;

 

    osviex.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

 

    //

{0>If platform does not support OSVERSIONINFOEX structure, it does not<}0{>Если платформа не поддерживает структуру OSVERSIONINFOEX, она не<0}

 

    // {0>have side-by-side support<}0{>имеет поддержки смежных компонентов.<0}

    //

    if (!GetVersionEx((OSVERSIONINFO *)&osviex))

    {

        return FALSE ; //

{0>нет<}0{> перенаправлений DLL<0}

    }

 

    // {0>However, for NT, then NT4 SP4 had support for OSVERSIONINFOEX <}0{>Однако, что касается NT, то в NT4 SP4 имелась поддержка OSVERSIONINFOEX,<0}

    // {0>support but it did not support DLL re-direction.<}0{>но не было поддержки перенаправления DLL.<0}

    // {0>If DLL re-direction appears in a future NT4 SP,  this code will have <}0{>Если перенаправление DLL появится в следующей версии NT4 SP, то этот код<0}

    // {0>to be updated.<}0{>нужно будет обновить.<0}

    //

    if ( (osviex.dwPlatformId == VER_PLATFORM_WIN32_NT) && (osviex.dwMajorVersion < 5) )

    {

        return FALSE ;

    }

 

    {0>// For the other platform Ids, assume has side by side support<}0{>// Предполагается, что для других ИД платформ имеется поддержка смежных компонентов<0}

    {0>return TRUE ;<}0{>return TRUE ;<0}

}

 

3.   {0>Application developers:<}0{>Разработчикам приложений<0} {0>Consume and install side-by-side components<}0{>следует использовать и устанавливать смежные компоненты<0}

{0>For Windows 2000 and Windows 98 Second Edition, any side-by-side DLLs that your application depends on must be installed into your application directory:<}0{>Для Windows 2000 и Windows 98 Second Edition все смежные DLL, от которых зависит работа Вашего приложения, должны быть установлены в каталоге приложения:<0}

{0>%ProgramFiles%\<company name>\<App Name><}0{>%ProgramFiles%\<название компании>\<Имя приложения><0}

{0>Be sure to follow the install and uninstall instructions provided by the component developer.<}0{>Строго следуйте инструкциям по установке и удалению, которые Вы получите от разработчика данного компонента.<0}

{0>On down-level operating systems, install side-by-side components into the system directory.<}0{>В операционных системах более низкого уровня устанавливайте смежные компоненты в системный каталог.<0} {0>Installers must dynamically check the operating system version to determine which sharing technique to use.<}0{>Программы установки должны динамически проверять версию операционной системы, чтобы определить, какую технологию совместного использования нужно применять.<0}

4.   {0>Install any non side-by-side shared files to the correct locations <}0{>Установка совместно используемых файлов, не являющихся смежными, в корректные каталоги<0}

{0>The proper location for shared components depends on whether these components are shared across companies or by a single company.<}0{>Корректный каталог для совместно используемых компонентов зависит от того, используются ли эти компоненты несколькими компаниями или только одной.<0}

·         {0>Shared components that are private to a single software vendor must be installed in one of two places.<}0{>Компоненты, совместно используемые приложениями только одного производителя программного обеспечения, должны устанавливаться в один из двух каталогов.<0} {0>Do not store these files in the system directory.<}0{>Не сохраняйте эти файлы в системном каталоге.<0}

{0>common files directory\<company name><}0{>каталог общих файлов\<название компании><0}

{0>%ProgramFiles%\<company name>\Shared Files<}0{>%ProgramFiles%\<название компании>\Shared files<0}

 

{0>The common files directory can be accessed by passing  CSIDL_PROGRAM_FILES_COMMON to the SHGetFolderPath API, or by using the Windows Installer CommonFilesFolder property.<}0{>Доступ к каталогу общих файлов можно получить путем передачи CSIDL_PROGRAM_FILES_COMMON в API SHGetFolderPath или при использовании свойства CommonFilesFolder в Windows Installer.<0}  {0>For more information on using Windows Installer Properties, see the Windows Installer Programmer’s Reference in the Platform SDK.<}0{>Для получения дополнительной информации по использованию свойств Windows Installer обратитесь к справочнику программиста Windows Installer в Platform SDK.<0}

 

·         {0>Non side-by-side OCXs and DLLs that are shared by multiple software vendors can be placed in the system directory to ensure backward compatibility with those applications.<}0{>Не являющиеся смежными компоненты OCX и DLL, которые используются совместно несколькими поставщиками программного обеспечения, могут располагаться в системном каталоге для обеспечения совместимости сверху вниз с этими приложениями.<0} 

{0>You must document in your Vendor Questionnaire any cases where your software application writes to the system directory.<}0{> Все случаи, в которых программное приложение выполняет запись в системный каталог, должны быть отмечены в Анкете поставщика.<0}

 

·         {0>New control panel applets (CPLs) must be installed in the application directory on Windows 2000. Register the path by adding a value under either of the following registry keys:<}0{>Новые апплеты панели управления (CPL) в Windows 2000 должны устанавливаться в каталог приложения. Зарегистрируйте путь, добавив значение в один из следующих разделов реестра:<0}

{0>HKLM\software\microsoft\windows\CurrentVersion\control panel\cpls <}0{>HKLM\software\microsoft\windows\Текущая версия\панель управления\cpl <0}

{0>HKCU\software\microsoft\windows\CurrentVersion\control panel\cpls <}0{>HKCU\software\microsoft\windows\Текущая версия\панель управления\cpl <0}

{0>Example of a name / value pair under this key:<}0{>Пример пары имя/значение в данном каталоге:<0}

{0>MyCpl = «%ProgramFiles%\MyCorp\MyApp\MyCpl.cpl»<}0{>MyCpl = «%ProgramFiles%\MyCorp\MyApp\MyCpl.cpl»<0}

 

·         {0>Services and device drivers must be placed in the system directory.<}0{>Драйверы устройств и служб должны находиться в системном каталоге.<0}

{0>Note:<}0{>Замечание:<0} {0>The system directory is not locked down when the user is a power user or administrator, so legacy components or globally shared components can still be placed there.<}0{>Если системный каталог используется привилегированным пользователем или администратором, он не блокируется. Таким образом, в системный каталог можно помещать наследуемые компоненты или глобальные совместно используемые компоненты.<0}  {0>However, System File Protection prevents the replacement of protected operating system files.<}0{>Однако Защита системных файлов предотвращает замену защищенных файлов операционной системы.<0} {0>See requirement #1. <}0{>См. требование 1. <0}

{0>How to Pretest Applications for Component Sharing Requirements<}0{>Предварительное тестирование приложений на соответствие требованиям по совместному использованию компонентов<0}

 

{0>To pretest installation:<}0{>Предварительное тестирование установки:<0}

{0>After installing your component, make sure there are no instances of fully qualified names to your component stored in the registry.<}0{>После установки компонента убедитесь, что в реестре отсутствуют полностью определенные имена для компонента.<0}

{0>To pretest uninstall:<}0{>Предварительное тестирование удаления:<0}

{0>Test uninstall with one instance of your component installed (only one application uses your component).<}0{>Протестируйте удаление в случае, когда установлен один экземпляр компонента (только одно приложение использует этот компонент).<0} {0>Make sure all GUIDs and other information to your component have been removed.<}0{>Убедитесь, что удаляются все GUID и прочая информация для этого компонента.<0}

{0>Test uninstall with two instances of your component installed (i.e., two apps uses your component).<}0{>Протестируйте удаление в случае, когда установлены два экземпляра компонента (т.е. два приложения используют этот компонент).<0} {0>Make sure the other application still runs after uninstalling the first application which uses your component.<}0{>Убедитесь, что после удаления первого приложения, в котором использовался этот компонент, второе приложение продолжает работать.<0}

{0>To pretest co-existence:<}0{>Предварительное тестирование совместной работы:<0}

{0>Install your component in two different applications.<}0{>Установите компонент в двух различных приложениях.<0} {0>Run both applications at the same time and make sure your component continues to function properly.<}0{>Запустите оба приложения одновременно и убедитесь, что компонент продолжает работать правильно.<0} {0>Ideally, you will test using two different versions of your component.<}0{>Рекомендуется выполнить тестирование с использованием двух различных версий данного компонента.<0}

 

 

 


{0>Chapter 4<}0{>Глава 4<0}

Describes the requirements to ensure that applications support roaming users, multiple users per machine, and simplified machine replacement. Applications that meet these requirements can also operate properly in a secure Windows environment.

{0>Data and Settings Management<}0{>Управление данными и настройками<0}

{0>Summary of Data and Settings Management Requirements<}0{>Общая информация о требованиях к управлению данными и настройками<0}

{0>Rationale<}0{>Логическое обоснование<0}

{0>Windows 2000 provides an underlying infrastructure that supports state separation of user data, user settings, and computer settings.<}0{>Windows 2000 обладает основополагающей инфраструктурой, которая поддерживает разделение состояний пользовательских данных, пользовательских настроек и настроек компьютера.<0} {0>Applications that properly use this infrastructure offer the following benefits:<}0{>Приложения, которые соответствующим образом используют данную инфраструктуру, имеют следующие преимущества:<0}

·         {0>Support for roaming users<}0{>Поддержка пользователей, использующих роуминг.<0}

·         {0>Support for multiple users on a single machine, each with their own settings<}0{>Поддержка нескольких пользователей на одном компьютере, каждый из которых имеет свои собственные настройки.<0}

·         {0>Simplified machine replacement <}0{>Упрощенная смена компьютера:<0}

·         {0>Operation in a secure Windows environment<}0{>Работа в защищенной среде Windows<0}

·         {0>Helps ensure proper functioning on Terminal Services.<}0{>Гарантия правильного функционирования в службах терминала.<0}

{0>IntelliMirror uses these features along with software installation and maintenance technologies described in Chapter 2, to provide the «follow me» feature that allows users’ data, settings, and software to follow them to any Windows 2000-based desktop.<}0{>IntelliMirror использует эти функции вместе с технологиями установки и поддержки программного обеспечения, о которых рассказывалось в главе 2, для предоставления функции «follow me», которая обеспечивает использование данных, настроек и программного обеспечения пользователя для любого рабочего места под управлением Windows 2000.<0}

{0>Customer Benefits<}0{>Преимущества пользователей<0}

·         {0>Users can easily back up their individual documents and settings without having to backup application and operating system files.<}0{>Пользователи могут легко создавать резервные копии своих личных документов и настроек, не создавая при этом копий файлов приложений и операционной системы.<0}

·         {0>Applications can be installed and run in a secure Windows environment.<}0{>Приложения могут устанавливаться и запускаться в защищенной среде Windows.<0}

·         {0>Multiple users can share a single computer, each with their own preferences and settings.<}0{>Несколько пользователей могут работать на одном компьютере, при этом каждый может использовать свои собственные настройки и установки.<0}

·         {0>A single user can roam to multiple computers, maintaining their own documents and settings from one computer to another.<}0{>Один пользователь может работать с роумингом, сохраняя свои собственные документы и настройки.<0}

·         {0>Administrators can easily manage corporate desktops.<}0{>Администратор легко может управлять корпоративными рабочими столами.<0}

 

{0>Requirements<}0{>Требования<0}

1.                       {0>Default to My Documents for storage of user-created data<}0{>Использование по умолчанию папки Мои документы для хранения пользовательских данных<0}

2.                       {0>Classify and store application data correctly<}0{>Корректная классификация и хранение данных приложения<0}

3.                       {0>Degrade gracefully on access denied<}0{>Постепенное прекращение работы при возникновении запрета на доступ<0}

4.                       {0>Run in a secure Windows environment<}0{>Работа в защищенной среде Windows<0}

5.                       {0>Adhere to system-level Group Policy settings<}0{>Использование системных настроек Политика Группы<0}

6.           {0>Applications that create ADM files must properly store their ADM file settings in the registry<}0{>Приложения, которые создают файлы ADM, должны соответствующим образом хранить свои настройки файлов ADM в реестре<0}


 

{0>References<}0{>Справочная информация<0}

{0>Windows 2000 Default Access Control Settings<}0{>Настройки по умолчанию для контроля доступа в Windows 2000<0}

{0>http://www.microsoft.com/windows/server/Technical/security/ <}0{>http://www.microsoft.com/windows/server/Technical/security/ <0}

{0>Whitepapers on Windows 2000 Management Services <}0{>Белые страницы в Службах Управления Windows 2000<0}

{0>http://www.microsoft.com/windows/server/Technical/management<}0{>http://www.microsoft.com/windows/server/Technical/management<0}

{0>Information on registry settings for system-level Group Policy:<}0{>Информация по настройкам реестра для системной Политики Группы:<0}

{0>System.adm file, installed on Windows 2000 systems<}0{>Файл system.adm, установленный в системах Windows 2000<0}

{0>How to Comply with Data and Settings Management Requirements<}0{>Соответствие требованиям по управлению настройками и данными<0}

1.         {0>Default to My Documents for storage of user-created data<}0{>Использование по умолчанию папки Мои документы для хранения пользовательских данных<0}

{0>The first time an application is run per user, the application’s Common File Open and Save dialogs must default to the My Documents folder or descendant folder the first time these dialogs are called.<}0{>При первом запуске приложения для каждого пользователя общие диалоги данного приложения Открыть Файл и Сохранить должны по умолчанию использовать папку Мои документы или вложенную в нее папку, если эти диалоги вызываются впервые.<0} {0>On subsequent calls to these dialogs, it is recommended to default to the previously used path.<}0{>При последующих вызовах данных диалогов рекомендуется применять по умолчанию путь, который использовался ранее.<0}

При вызове общих диалогов Открыть/Сохранить файл без параметров по умолчанию должна открываться папка Мои документы. Можно непосредственно назначить папку Мои документы целью, передав CSIDL_PERSONAL в функцию SHGetFolderPath().<0}

{0>Note:<}0{>Замечание:<0}

·         {0>The My Documents folder is for user-created data, but not for temporary storage or application state data.<}0{>Папка Мои документы предназначена для хранения данных, созданных пользователем, а не как временное хранилище или папка данных о состоянии приложения.<0} {0>Non-user data must be stored using the proper AppData path, as described in the next requirement.<}0{>Данные, не являющиеся пользовательскими, должны сохраняться с использованием соответствующего пути AppData, как описано в следующем требовании.<0}

·         {0>For imaging applications, it is recommended to use My Pictures, a descendant of My Documents, in place of My Documents.<}0{>Для приложений, работающих с изображениями, рекомендуется вместо папки Мои документы использовать папку Мои рисунки, которая вложена в Мои документы.<0}

{0>Benefits for using the My Documents folder as the default for data storage are:<}0{>При использовании для хранения данных папки по умолчанию Мои документы появляются следующие преимущества:<0}

·         {0>Users have one familiar place to organize and store all their data.<}0{>У пользователей имеется только один каталог для упорядочения и хранения всех своих данных.<0}

·         {0>Data sharing is facilitated between applications because all applications using Common File Open can easily access the My Documents folder.<}0{>Упрощено совместное использование данных между приложениями, так как все приложения легко могут получить доступ к папке Мои документы с помощью общего диалога Открыть Файл.<0}

·         {0>My Documents is an abstracted location and can be redirected to the network transparently by an administrator.<}0{>Папка Мои документы является абстрактным местоположением, и администратор может незаметно для пользователей перенести ее в другое место в сети.<0}

·         {0>My Documents is available on the Desktop.<}0{>Папку Мои документы можно открыть с Рабочего стола.<0}

·         {0>The My Documents folder is part of a user’s profile information, so by default, other users can’t read its contents.<}0{>Папка Мои документы является частью информации профиля пользователя, поэтому по умолчанию другие пользователи не могут читать ее содержимое.<0}

 

{0>Retrieving the path to My Documents:<}0{>Определение пути к папке Мои документы:<0} {0>The preferred way to do this is by using passing CSIDL_PERSONAL to the SHGetFolderPath API.<}0{>Предпочтительным способом определения пути к папке является передача CSIDL_PERSONAL в API SHGetFolderPath.<0}

TCHAR szMyDocs[MAX_PATH];

...

hr = SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, 0, szMyDocs)

 

{0>SHGetFolderPath behaves consistently across Windows 95, Windows 98, Windows NT 4, and Windows 2000 and is exported from SHFOLDER.DLL.<}0{>SHGetFolderPath совместима с Windows 95, Windows 98, Windows NT 4 и  Windows 2000 и экспортируется из SHFOLDER.DLL.<0}  {0>SHFOLDER.DLL is a new DLL that ships in Windows 2000 as well as Windows NT 4 Service Pack 4, Internet Explorer 5, and Windows 98 Second Edition.<}0{>SHFOLDER.DLL – это новая библиотека DLL, которая поставляется с Windows 2000, а также с Windows NT 4 с пакетом обновления 4, Internet Explorer 5 и Windows 98 Second Edition.<0} {0>SHFOLDER.DLL is a redistributable component that contains support for CSIDL_PERSONAL as well as many other special folders.<}0{>SHFOLDER.DLL – это распространяемый компонент, включающий поддержку для CSIDL_PERSONAL, а также для многих других специальных папок.<0} {0>(See Appendix A, «Best Practices.»)<}0{>(См. Приложение А, «Рекомендации по улучшению работы».)<0}  {0>Software vendors are encouraged to redistribute this component as much as possible to enable this support on Windows operating systems prior to Windows 2000. Windows 2000 includes this DLL as a protected system file and as such, this DLL cannot be replaced on Windows 2000 or greater.<}0{>Поставщикам программного обеспечения рекомендуется содействовать широкому распространению этого компонента, чтобы включить эту поддержку в операционные системы Windows, предшествующие версии Windows 2000. Windows 2000 включает эту DLL как защищенный системный файл, и, таким образом, данная DLL не может быть заменена в системе Windows версии 2000 или старше.<0}

 

2.         {0>Classify and store application data correctly<}0{>Корректная классификация и хранение данных приложения<0}

{0>Application data, such as user preferences, application state, temp files, and so on, must be stored in folders or the registry according to the following classifications:<}0{>Данные приложения, такие как установки пользователя, состояние приложения, временные файлы и др., должны храниться в папках или в реестре в соответствии со следующей классификацией:<0}

·         {0>Per user, roaming<}0{>Для пользователя, с роумингом<0}

·         {0>Per user, non-roaming<}0{>Для пользователя, без роуминга<0}

·         {0>Per machine (non-user specific and non-roaming)<}0{>Для компьютера (независимо от пользователя и от роуминга)<0}

{0>Guidelines on classifying application data among these three choices are provided below, though the final decision is left to the software developer.<}0{>Ниже приведены принципы классификации данных приложения для этих трех вариантов; тем не менее, окончательное решение остается за разработчиком программного обеспечения.<0} {0>Classifying application data according to these three types ensures a consistent and abstracted location for user data, enables roaming, enforces per-user separation of application data, and allows the operating system and its applications to be secured.<}0{>Классификация данных приложения в соответствии с этими тремя типами обеспечивает постоянное абстрактное местоположение для данных пользователя, роуминг, осуществляет разделение данных приложения по пользователям и обеспечивает защиту операционной системы и ее приложений.<0}  {0>In a roaming scenario, data that is designated as roaming will be copied to and from the server during logon/logoff processing.<}0{>В сценарии роуминга данные, обозначенные как данные роуминга, будут копироваться с сервера и на сервер во время процедуры регистрации/отключения.<0} {0>It is important to prioritize carefully what should be roamed vs. not roamed so as to minimize the amount of information that is transferred across the network.<}0{>Очень важно точно определить, в каких случаях будет и в каких не случаях будет использоваться роуминг, с тем чтобы сократить до минимума объем информации, передаваемой по сети.<0}

{0>In general, use folders for storing application data larger than 64K.<}0{>Обычно следует использовать папки для хранения данных приложения объемом более 64 Кб.<0}  {0>The registry is acceptable for smaller amounts of data.<}0{>Реестр предназначен для хранения меньшего объема данных.<0}

{0>Using Application Data Folders:<}0{>Использование папок данных приложения:<0}

{0>The CSIDL values described here provide a consistent, unified way to access the physical paths to the desired folder locations, independent of the operating system.<}0{>Значения CSIDL, о которых рассказывается в этом разделе, предоставляют последовательный единый способ доступа к физическим путям до необходимых папок, не зависящий от операционной системы.<0} {0>The preferred API is SHGetFolderPath, because it behaves consistently across all versions of Windows.<}0{>Предпочтительным API является SHGetFolderPath, так как он совместим со всеми версиями Windows.<0} {0>To access the path for application data, applications should call SHGetFolderPath with the appropriate CSIDL and then append [company name]\[product name]\[version] to the returned path.<}0{>Для получения пути к данным приложения должны вызвать функцию SHGetFolderPath с соответствующим CSIDL, а затем добавить [название компании]\[название продукта]\[версия] к возвращаемому пути.<0} {0>Specifically:<}0{>В частности:<0}

{0>To retrieve the CSIDL _APPDATA path:<}0{>Чтобы найти путь к CSIDL _APPDATA:<0}

TCHAR szAppData[MAX_PATH];

hr = SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szAppData);

 

{0>When storing application data in the user profile, applications should use the same hierarchy under Application Data and Templates as is used in the registry:<}0{>При сохранении данных приложения в профиле пользователя, приложения должны использовать в Данных Приложения и Шаблонах ту же самую иерархию, которая используется в реестре:<0}

    {0>[User Profile]\<}0{>[Профиль пользователя]\<0}

           {0>Application Data\<}0{>Данные приложения\<0}

                  {0>[company name]\<}0{>[название компании]\<0}

                         {0>[product name]\<}0{>[название продукта]\<0}

                                {0>[version]\<}0{>[версия]\<0}

                                       {0>[file or folder]<}0{>[файл или папка]<0}

 

{0>Data Type<}0{>Тип данных<0}

{0>Folder CSIDL<}0{>CSIDL папки<0}

{0>Folder Location<}0{>Местоположение папки<0}

{0>Per user, roaming<}0{>Для пользователя, с роумингом<0}

CSIDL_APPDATA

 

{0>[user profile]\Application data<}0{>[профиль пользователя]\Данные приложения<0}

{0>Per user, non-roaming<}0{>Для пользователя, без роуминга<0}

CSIDL_LOCAL_APPDATA

 

{0>[user profile]\Local Settings\Application data<}0{>[профиль пользователя]\Локальные настройки\Данные приложения<0}

{0>Per machine (non-user specific  & non- roaming)<}0{>Для компьютера (независимо от пользователя и роуминга)<0}

CSIDL_COMMON_APPDATA

 

{0>All Users\Application data<}0{>Все данные приложения/пользователей<0}

 

·         {0>CSIDL_APPDATA<}0{>CSIDL_APPDATA<0}

{0>As part of the User profile, this folder will roam.<}0{>Так как эта папка является частью Профиля пользователя, она будет перемещаться.<0}  {0>Use this folder to store all user-specific application preferences.<}0{>Используйте эту папку  для хранения всех настроек приложения, определяемых пользователем.<0} {0>For example, if a user can specify a custom dictionary to be used in your application, you should store it here.<}0{>Например, если пользователь может указать другой словарь, который будет использоваться в Вашем приложении, его необходимо сохранить в этой папке.<0} {0>That way if the user roams from computer to computer, their dictionary will roam with them.<}0{>В этом случае, если пользователь будет переходить от компьютера к компьютеру, его словарь будет перемещаться вместе с ним.<0} {0>This also allows other users to have their own individual custom dictionaries.<}0{>Это также позволяет другим пользователям иметь свои собственные словари.<0}


·         {0>CSIDL_LOCAL_APPDATA<}0{>CSIDL_LOCAL_APPDATA<0}

{0>This folder is for application data that does not roam.<}0{>Эта папка используется для данных приложения, которые не перемещаются.<0} {0>It is still part of the User profile, so this is still per-user information.<}0{>Она является частью профиля пользователя, поэтому в ней хранится информация пользователя.<0} {0>Application data that is machine-dependent, such as user specified monitor resolution, should be stored here.<}0{>В ней должны храниться данные приложения, которые зависят от компьютера, например, разрешение монитора, указанное пользователем.<0} {0>This data must not roam because different machines have different monitors.<}0{>Эти данные не должны перемещаться, так как разные компьютеры имеют разные мониторы.<0} {0>In addition, large blocks of data which can easily be re-created should be placed here to minimize download time that is incurred when roaming.<}0{>Кроме того, в эту папку должны помещаться большие блоки данных, которые могут быть легко созданы повторно, чтобы сократить время загрузки, расходуемое при роуминге.<0} {0>For example, Internet Explorer keeps its cache of downloaded html/gif pages here so that they don't roam with the user.  But the smaller cookie and history lists are stored in CSIDL_APPDATA so that they roam.<}0{>Например, Internet Explorer хранит в этой папке кэш загруженных html/gif-страниц; таким образом, эти страницы не могут перемещаться вместе с пользователем. Но небольшие файлы cookie и списки просмотренных ранее страниц хранятся в папке CSIDL_APPDATA, следовательно, их можно перемещать.<0}

·         {0>CSIDL_COMMON_APPDATA.<}0{>CSIDL_COMMON_APPDATA.<0}

{0>This folder should be used for application data that is not user specific.<}0{>Эта папка должна использоваться для данных приложения, которые не определяются пользователем.<0} {0>For example, an application may store a spell check dictionary, a database of clip-art or a log file in the CSIDL_COMMON_APPDATA folder.<}0{>Например, в папке CSIDL_COMMON_APPDATA приложение может хранить словарь для проверки орфографии, базу данных коллекции картинок или файл протокола.<0} {0>This information will not roam and is available to anyone using the computer.<}0{>Данная информация не перемещается, и она доступна любому пользователю, работающему на этом компьютере.<0} {0>By default, this location is read-only for normal (non-admin, non-power) Users.<}0{>По умолчанию для обычных пользователей (не являющихся администраторами или привилегированными пользователями) эта папка доступна только для чтения.<0}  {0>If an application requires normal Users to have write access to an application specific subdirectory of CSIDL_COMMON_APPDATA, then the application must explicitly modify the security on that sub-directory during application setup.<}0{>Если необходимо, чтобы обычные пользователи имели права на запись в определенный подкаталог CSIDL_COMMON_APPDATA, то приложение должно явно изменить защиту данного подкаталога во время настройки приложения.<0}  {0>The modified security must be documented in the Vendor Questionnaire.<}0{>Информация об изменении защиты должна быть занесена в Анкету поставщика.<0}

{0>Using the Registry:<}0{>Использование реестра:<0}

{0>Applications may also use the registry for storing read/write application data and configuration files.<}0{>Приложения могут также использовать реестр для хранения данных приложения, доступных для чтения/записи, и файлов конфигурации.<0}

·         {0>The HKCU registry is appropriate for storing small amounts of data (<64K) and for policy settings that are per user.<}0{>Реестр HKCU предназначен для хранения небольших объемов данных (менее 64 Кб) и для настроек политики, которые определяются для каждого пользователя.<0}

·         {0>Avoid writing to HKLM during runtime, because normal Users have Read Only access to the entire HKLM tree by default.<}0{>Постарайтесь не производить запись в HKLM во время работы, так как по умолчанию обычные пользователи имеют доступ Только для Чтения ко всему дереву HKLM.<0} {0>In addition, HKLM does not support roaming.<}0{>Кроме того, HKLM не поддерживает функцию роуминга.<0}

·         {0>Larger, file-based data should be placed in the Application Data folder.<}0{>Данные большего объема, определяемые файлом, должны находится в папке Данные Приложения.<0} {0>For example, Internet Explorer’s Temporary Internet Cache is stored within the user profile and not in the registry.<}0{>Например, Временный Кеш Интернет в Internet Explorer хранится в профиле пользователя, а не в реестре.<0}

{0>Additional Considerations:<}0{>Дополнительные аспекты:<0}

·         {0>Files may be shared in UserProfile\Application Data.<}0{>Файлы могут совместно использоваться в UserProfile\Application Data.<0} {0>Multiple computers may use them simultaneously in different versions of the application.<}0{>Они могут использоваться несколькими компьютерами одновременно в различных версиях данного приложения.<0} {0>The data may also be used by multiple applications, for example, applications in a productivity suite.<}0{>Данные также могут использоваться несколькими приложениями, например, приложениями одного комплекта программ.<0} {0>Applications should only get a write exclusive on the file when necessary.<}0{>При необходимости приложения могут получить исключительное право записи в файл.<0} {0>For example, applications using CreateFile should only specify GENERIC_WRITE when a write is required, but they should always set FILE_SHARE_READ.<}0{>Например, приложения, использующие CreateFile, должны просто указать GENERIC_WRITE, если потребуется выполнить запись, но в них всегда должно быть задано FILE_SHARE_READ.<0}

·         {0>Paths returned by SHGetFolderPath are valid Win32 file system names that may contain spaces and may be in the UNC format.<}0{>Пути, возвращаемые SHGetFolderPath, являются допустимыми именами файловой системы Win32, которые могут содержать пробелы и могут иметь формат UNC.<0}

·         {0>PathAppend() and PathCombine() APIs can be used to concatenate the relative path information onto the paths returned by SHGetFolderPath.<}0{>Функции API PathAppend() и PathCombine() могут использоваться для объединения относительного пути и путей, возвращаемых функцией SHGetFolderPath.<0} {0>Example:<}0{>Например:<0}

PathAppend(szAppData, "Company\Product\File.txt")")


 

·         {0>Any user can write into the All Users\Documents location.<}0{>Любой пользователь может осуществлять запись в каталог Все пользователи\Документы.<0}  {0>However, by default, only the creator of the document (and administrators) will be able to subsequently modify the document.<}0{>Однако по умолчанию только создатель документа (и администраторы) смогут в дальнейшем вносить изменения в этот документ.<0}  {0>All other (non-admin) Users will have read-only access to the document by default.<}0{>Все остальные пользователи (не являющиеся администраторами) смогут по умолчанию получать к этому документу доступ только для чтения.<0}  {0>If an application requires that all normal Users to have write access to a given application specific subdirectory of CSIDL_COMMON_DOCUMENTS, then the application must explicitly modify the security on that sub-directory during application setup.<}0{>Если приложению необходимо, чтобы все обычные пользователи могли осуществлять запись в определенный подкаталог папки CSIDL_COMMON_DOCUMENTS данного приложения, то приложение должно явно изменить защиту этого подкаталога во время настройки.<0}  {0>The modified security must be documented in the Vendor Questionnaire.<}0{>Информация об изменении настроек защиты должна быть занесена в Анкету поставщика.<0}

·         {0>By default, normal Users have read only access to all locations other than those specified in Requirement 6. Thus normal Users cannot write to the Winnt directory, system32, or the Program Files directory.<}0{>По умолчанию обычные пользователи имеют доступ только для чтения ко всем каталогам, кроме перечисленных в требовании 6. Таким образом, обычные пользователи не могут осуществлять запись в каталог Winnt, system32 или каталог Program Files.<0}

 

3.         {0>Degrade gracefully on access denied<}0{>  Корректная обработка запрета на доступ<0}

{0>By default on Windows 2000, normal (non-admin, non-power) Users cannot write to per-machine locations such as HKLM and the Winnt directory.<}0{>По умолчанию в Windows 2000 обычные пользователи (не являющиеся администраторами или привилегированными пользователями) не могут осуществлять запись в местоположения, определенные для каждого компьютера, такие как HKLM и каталог Winnt.<0}  {0>Only applications that classify and store data correctly, as described above, will be able to avoid access denied errors and run successfully in this secure environment.<}0{>Только приложения, которые корректно классифицируют и хранят данные, как рассказывалось выше, смогут избежать ошибок запрета доступа и успешно работать в защищенном окружении.<0} {0>There are, however, legitimate scenarios where access denied errors are encountered by applications which classify and store data correctly.<}0{>Однако существуют сценарии, где ошибки запрета доступа могут встречаться в приложениях, корректно классифицирующих и хранящих данные.<0}  {0>For example, <}0{>Например, <0}

·         {0>An unprivileged User may attempt to run an administrative application that is designed to modify system-wide settings.<}0{>Непривилегированные пользователи могут попытаться запустить приложение для администрирования, разработанное для изменения настроек системы.<0}  {0>In this case, the User is allowed to run the application, but cannot carry out any system-wide modifications.<}0{>В этом случае пользователь может запустить приложение, но не может внести изменения в систему.<0}

·         {0>An unprivileged User may run an application that allows users to modify objects based on permissions.<}0{>Непривилегированный пользователь может запускать приложение, которое позволяет пользователям изменять объекты на основании разрешений.<0}  {0>In this case, a User is allowed to modify objects which they own, but not objects owned by the administrator or other Users.<}0{>В этом случае пользователям разрешается изменять объекты, владельцами которых они являются, но не объекты, владельцами которых являются администратор или другие пользователи.<0}

·         {0>An unprivileged User may direct an application to save per-user data in a per-machine location, for example, by choosing the system directory as the destination for a File\Save operation.<}0{>Непривилегированные пользователи могут дать приложению команду сохранять пользовательские данные в каталоге, определенном для каждого компьютера, например, выбирая каталог системы в качестве места назначения для операции Файл\Сохранить.<0}

{0>In these cases, the application should degrade gracefully when the access denied error is encountered.<}0{>В таких случаях, если возникнет ошибка запрета доступа, приложение должно постепенно прекратить работу.<0}  {0>Degrading gracefully can be accomplished by:<}0{>Постепенное прекращение работы может быть выполнено за счет:<0}

1.     {0>Disabling the operation in the first place.<}0{>Во-первых, блокировки операции.<0}

{0>This is the approach taken by System Settings in Control Panel.<}0{>Этот подход используется Настройками системы на Панели управления.<0}  {0>A User cannot set system-wide environment variables, but they can set their own environment variables.<}0{>Пользователи не могут установить переменные системного окружения, но они могут задать свои собственные переменные окружения.<0}  {0>Thus, when a User launches this applet, the system-wide environment variable option is «grayed-out».<}0{>Таким образом, когда пользователь запускает это приложение, то раздел переменных сетевого окружения  недоступен.<0}  {0>When an administrator launches it, the system-wide environment variables can be modified.<}0{>Когда это приложение запускает администратор, переменные системного окружения можно изменить.<0}

2.     {0>Display an appropriate error message.<}0{>Вывода соответствующего сообщения об ошибке<0}  {0>For example,<}0{>Например,<0}

·         {0>«You must be an administrator to perform this operation»<}0{>«Для выполнения этой операции Вам необходимо иметь права администратора»<0}

·         {0>«You only have permissions to view the properties of this object»<}0{>«У Вас имеются права только на просмотр свойств данного объекта»<0}

·         {0>«You must have xyz privilege to perform this operation»<}0{>«Для выполнения этой операции Вам необходимо иметь привилегии xyz»<0}

·         {0>«You must have write access to abc.xyz to perform this operation» <}0{>«Для выполнения этой операции Вам необходимо иметь право на запись в файл abc.xyz» <0}

 


4.   {0>Run in a secure Windows environment<}0{>Работа в защищенной среде Windows<0}

{0>Your application must function properly in a secure Windows environment.<}0{>Ваше приложение должно корректно работать в защищенной среде Windows.<0} {0>Complying with the previous requirements in this chapter will help ensure that your application meets this requirement.<}0{>Выполнение всех требований, описанных ранее в данной главе, гарантирует соответствие приложения этому требованию.<0} 

{0>A secure Windows environment is defined as the environment exposed to a normal (non-admin\non-power) User by default on a clean-installed NTFS system.<}0{>Защищенная среда Windows определяется как среда, в которой по умолчанию может работать обычный пользователь (не являющийся администратором или привилегированным пользователем) в чисто установленной системе NTFS.<0}  {0>In this environment, Users can only write to three* specific locations:<}0{>В этой среде пользователи могут осуществлять запись только в три* специальных местоположения:<0}

1.     {0>Their own portion of the registry (HKEY_CURRENT_USER)** <}0{>В свои разделы реестра (HKEY_CURRENT_USER)** <0}

2.     {0>Their own user profile directory (CSIDL_PROFILE)<}0{>В свои собственные каталоги пользовательского профиля (CSIDL_PROFILE)<0}

3.     В каталог совместно используемых документов (CSIDL_COMMON_DOCUMENTS)***<0}

{0>Users can also write to subkeys and subdirectories of these locations.<}0{>Пользователи могут также осуществлять запись в подразделы и подкаталоги данных местоположений.<0}  {0>For example, users can write to CSIDL_PERSONAL (My Documents) because it is a subdirectory of CSIDL_PROFILE.<}0{>Например, пользователи могут выполнять запись в CSIDL_PERSONAL (Мои документы), так как этот каталог является подкаталогом CSIDL_PROFILE.<0} {0>Users have Read-Only access to the rest of the system.<}0{>К остальной части системы пользователи имеют доступ Только для чтения.<0}

{0>*Applications are free to modify the default security for an application-specific subdirectory of CSIDL_COMMON_APPDATA provided the modification is documented in the vendor questionnaire.<}0{>*Приложения могут изменять установленные по умолчанию настройки защиты для подкаталога CSIDL_COMMON_APPDATA приложения при условии, что информация об этих изменениях будет занесена в анкету поставщика.<0}  {0>This may provide a fourth location for Users to write to for a given application.<}0{>В этом случае пользователям может быть предоставлено четвертое местоположение, в которое они смогут осуществлять запись для данного приложения.<0}

{0>**Users cannot write to the following subsections of HKCU:<}0{>**Пользователи не могут выполнять запись в следующие подкаталоги HKCU:<0}

\Software\Policies

\Software\Microsoft\Windows\CurrentVersion\Policies

 

{0>***By default, Users cannot write to other Users’ shared documents, they can only read other Users’ shared documents.<}0{>***По умолчанию пользователи не могут осуществлять запись в совместно используемые документы других пользователей, они могут только читать совместно используемые документы других пользователей.<0}  {0>Applications are free to modify this default security on an application-specific subdirectory of CSIDL_COMMON_DOCUMENTS provided the modification is documented in the Vendor Questionnaire.<}0{>Приложения могут изменять установленные по умолчанию настройки защиты в подкаталоге CSIDL_COMMON_DOCUMENTS приложения при условии, что информация об этих изменениях будет занесена в Анкету поставщика.<0}

 

{0>Exception:<}0{>Исключение:<0}

{0>When the major features of the application can be successfully run as a non-privileged User, exceptions may be made for minor features that are not considered important for the operation of the program and which are not installed by any default mechanism (e.g. a minimal or typical install) other than a "complete" install.<}0{>Несмотря на то, что основные функции приложения могут успешно запускаться непривилегированными Пользователями, исключение может быть сделано для нескольких функций, которые не считаются важными для работы программы и не устанавливаются ни одним механизмом по умолчанию (например, в процессе стандартной или минимальной установки), кроме "полной" установки.<0}  {0>Examples of such minor features include components necessary to support legacy file formats.<}0{>Примерами таких второстепенных функций могут служить компоненты, необходимые для поддержки форматов наследуемых файлов.<0} 

{0>For any feature that does not work as User, you must document in the Vendor Questionnaire what objects (file system\registry keys) need to be opened in order for that feature\function to work.<}0{>Для любой функции, которая работает не как Пользователь, необходимо занести в Анкету поставщика информацию о том, какие объекты (разделы файловой системы\реестра) необходимо открыть для обеспечения работы этой функции.<0} {0>Requests for exemptions are judged on a case-by-case basis.<}0{>Вопрос о том, может ли функция считаться исключением, рассматривается в каждом отдельном случае.<0}

 

5.   {0>Adhere to system-level Group Policy settings<}0{>Использование системных настроек Политика Группы<0}

{0>Group Policy settings allow administrators to control and manage their users’ PC environments by mandating specific user and computer settings across the network.<}0{>Настройки Политика Группы позволяют администраторам осуществлять контроль и управление окружением ПК пользователей путем предоставления полномочий определенному пользователю и настроек компьютера по сети.<0} {0>System-level Group Policy settings may be set by administrators to control specific capabilities of the system.<}0{>Системные настройки Политика Группы могут устанавливаться администраторами для управления определенными возможностями системы.<0} {0>For each policy listed below, your application must adhere to any policy settings that are enabled at the time your application is launched.<}0{>Для каждой представленной ниже политики Ваше приложение должно использовать все настройки политики, установленные во время запуска приложения.<0} {0>Adherence to an enabled policy is defined by «Application Action» in the charts below.<}0{>Строгое соблюдение установленной политики задается параметром «Действие приложения» в представленных ниже таблицах.<0} {0>The «Registry Information» indicates where the policy setting information is stored.<}0{>Параметр «Информация о реестре» указывает, где хранится информация о настройках политики.<0}

{0>For many applications, no action is required to adhere to these policies.<}0{>Для большей части приложений не нужно предпринимать никаких действий, чтобы следовать этим политикам.<0} {0>However, if your application replaces or duplicates operating system functionality, specific steps may be required on the part of the application.<}0{>Однако если Ваше приложение заменяет или дублирует работу операционной системы, возможно, для части этого приложения необходимо будет выполнить определенные действия .<0}


 

{0>Policy Setting<}0{>Настройка политики<0}

{0>Remove Run menu from Start Menu<}0{>Удалить меню Выполнить из меню Пуск<0}

{0>Description<}0{>Описание<0}

{0>When this policy is enabled, Windows 2000 removes Run from the Start Menu and disables users from launching the Run dialog via pressing the Windows Key + R.<}0{>Если используется эта политика, Windows 2000 удаляет пункт Выполнить из меню Пуск и запрещает пользователям загружать диалог Запуск Программы путем нажатия клавиши Windows + R.<0}

{0>Application <}0{>Действие<0}

{0>Action<}0{>приложения<0}

{0>If your application has a «run» function that allows a user to start a program by typing in its name and path in a dialog, then your application must disable that functionality when this policy is enabled.<}0{>Если в приложении имеется функция «Выполнить», которая позволяет пользователю запускать программу путем указания в диалоге имени программы и пути, то приложение должно отключать эту возможность, если выбрана данная политика.<0}

{0>Registry Information<}0{>Информация о реестре<0}

{0>Key:<}0{>Параметр:<0}  {0>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<}0{>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<0}

{0>Value Name:<}0{>Значение:<0} {0>NoRun<}0{>NoRun<0}

 

{0>Policy Setting<}0{>Настройка политики<0}

{0>Hide these specified drives in My Computer<}0{>Скрыть указанные диски в папке Мой компьютер<0}

{0>Description<}0{>Описание<0}

{0>When enabled, this policy removes the icons representing the selected disk drives from My Computer, Windows Explorer, and My Network Places and from Common Dialogs.<}0{>Данная политика удаляет пиктограммы, представляющие выбранные дисководы, из папок Мой компьютер, Windows Explorer, Моя Сеть (My Network Places) и из общих диалогов.<0}

{0>Application <}0{>Действие<0}

{0>Action<}0{>приложения<0}

{0>Your application must hide any drives that are hidden by the system when this policy is enabled.<}0{>Ваше приложение должно не отображать все диски, которые скрыты в системе, если выбрана эта политика.<0} {0>This includes any buttons, menu options, icons, or any other visual representation of drives in your application.<}0{>Это относится ко всем кнопкам, пунктам меню, пиктограммам или другим визуальным представлениям дисков в Вашем приложении.<0} {0>This does not preclude the user from accessing drives by manually entering drive letters in dialogs.<}0{>Пользователям не запрещается обращаться к дискам, вручную вводя буквы дисков в диалогах.<0}

{0>Registry Information<}0{>Информация реестра<0}

{0>Key:<}0{>Параметр:<0} {0>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<}0{>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<0}

{0>Value Name:<}0{>Значение:<0} {0>NoDrives<}0{>NoDrives<0}

 

{0>Policy Setting<}0{>Настройка политики<0}

{0>Run only allowed Windows Applications<}0{>Запускать только разрешенные Приложения Windows<0}

{0>Description<}0{>Описание<0}

{0>When this policy is enabled, users can only run applications that are listed under the following key:<}0{>Если используется данная политика, пользователи могут запускать только приложения, которые перечислены в следующем каталоге:<0} {0>Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun<}0{>Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun<0}

{0>Application <}0{>Действие<0}

{0>Action<}0{>приложения<0}

{0>Your application must not start any application that is not on this list.<}0{>Приложение не должно запускать никакие приложения, если они не указаны в этом списке.<0} {0>Note this does not apply when launching applications via OLE/COM/DCOM.<}0{>Обратите внимание, что эта политика не применяется в случае, когда приложения запускаются через OLE/COM/DCOM.<0} {0>If you use ShellExecuteEx, Windows 2000 will handle this for you automatically.<}0{>Если Вы используете ShellExecuteEx, Windows 2000 выполнит соответствующую обработку автоматически.<0}

{0>Registry Information<}0{>Информация реестра<0}

{0>Key:<}0{>Параметр:<0} {0>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<}0{>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<0}

{0>Value Name:<}0{>Значение:<0} {0>RestrictRun<}0{>RestrictRun<0}

 

{0>Policy Setting<}0{>Настройка политики<0}

{0>Remove "Map Network Drive" and "Disconnect Network Drive"<}0{>Удалить пункты "Подключить сетевой диск" и "Отключить сетевой диск"<0}

{0>Description<}0{>Описание<0}

{0>When this policy is enabled, users are prevented from using Windows Explorer and My Network Places to connect to other computers or to close existing connections.<}0{>Если используется эта политика, пользователи не могут использовать Windows Explorer и Моя Сеть (My Network Places) для подключения к другим компьютерам или отключения существующих соединений.<0}

{0>Application <}0{>Действие<0}

{0>Action<}0{>приложения<0}

{0>When this policy is enabled, applications must not provide buttons, menu options, icons, or any other visual representation that enables a user to map or disconnect network drives.<}0{>Если выбрана данная политика, приложения не должны предоставлять кнопки, пункты меню, пиктограммы или другие визуальные элементы, которые позволят пользователю подключать или отключать сетевые диски.<0}

{0>Registry Information<}0{>Информация реестра<0}

{0>Key:<}0{>Параметр:<0} {0>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<}0{>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<0}

{0>Value Name:<}0{>Значение:<0} {0>NoNetConnectDisconnect<}0{>NoNetConnectDisconnect<0}

 

{0>Policy Setting<}0{>Настройка политики<0}

{0>No Entire Network in My Network Places<}0{>Удалить пункт Вся сеть из папки Моя Сеть<0}

{0>Description<}0{>Описание<0}

{0>When enabled, this policy removes all computers outside of the user's workgroup or local domain from lists of network resources in Windows Explorer and My Network Places.<}0{>Данная политика удаляет все компьютеры, находящиеся вне рабочей группы пользователя или локального домена, из списков сетевых ресурсов в Windows Explorer и папке Моя Сеть (My Network Places).<0}

{0>Application <}0{>Действие <0}

{0>Action<}0{>приложения<0}

{0>When this policy is enabled, applications that allow users to browse network resources must limit browsing functionality to local workgroup or domain.<}0{>Если используется данная политика, приложения, позволяющие пользователям просматривать сетевые ресурсы, должны ограничить возможности обзора локальной рабочей группой или доменом.<0}

{0>Registry Information<}0{>Информация реестр<0}

{0>Key:<}0{>Параметр:<0} {0>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Network<}0{>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Network<0}

{0>Value Name:<}0{>Значение:<0} {0>NoEntireNetwork<}0{>NoEntireNetwork<0}

 

{0>Policy Setting<}0{>Настройка политики<0}

{0>Do not keep history of recently open documents<}0{>Не сохранять журнал последних открытых документов<0}

{0>Description<}0{>Описание<0}

{0>When this policy is enabled, the system does not save shortcuts to most recently used (MRU) documents in the start menu.<}0{>Если используется эта политика, система не сохраняет ярлыки последних использовавшихся (MRU) документов в меню Пуск.<0}

{0>Application <}0{>Действие<0}

{0>Action<}0{>приложения<0}

{0>When this policy is enabled, applications must not keep any MRU lists (for example, in file menu and save/open dialogs).<}0{>Если используется эта политика, приложения не должны сохранять никакие списки последних использовавшихся файлов (например, в меню Файл и диалогах Сохранить/Открыть).<0}

{0>Registry Information<}0{>Информация реестра<0}

{0>Key:<}0{>Параметр:<0} {0>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<}0{>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<0}

{0>Value name:<}0{>Значение:<0} {0>NoRecentDocsMenu<}0{>NoRecentDocsMenu<0}

 


 

{0>Policy Setting<}0{>Настройка политики<0}

{0>Disable/Remove the Shut Down command<}0{>Отключить/Удалить команду Завершение работы<0}

{0>Description<}0{>Описание<0}

{0>This policy prevents the user from using the Windows user interface to shut down the system.<}0{>Эта политика запрещает использовать пользовательский интерфейс Windows для завершения работы системы.<0}

{0>Application <}0{>Действие<0}

{0>Action<}0{>приложения<0}

{0>When this policy is enabled, applications that enable the user to shut down Windows must disable this capability.<}0{>Если выбрана эта политика, приложения, разрешающие пользователям завершать работу Windows, должны отключить эту возможность.<0}

{0>Registry Information<}0{>Информация реестра<0}

{0>Key:<}0{>Параметр:<0} {0>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<}0{>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<0}

{0>Value Name:<}0{>Значение:<0} {0>NoClose<}0{>NoClose<0}

 

{0>Policy Setting<}0{>Настройка политики<0}

{0>Hide Common Dialog Places Bar<}0{>Скрыть панель местоположений общих диалогов<0}

{0>Description<}0{>Описание<0}

{0>The places bar allows users to navigate via the common dialog directly to the following locations:<}0{>Панель местоположений позволяет пользователям переходить с помощью общего диалога непосредственно к следующим местоположениям:<0} {0>History folder, Desktop, My Documents, My Computer, and My Network Places.<}0{>папка Журнал, Рабочий стол, Мои документы, Мой компьютер и Моя сеть.<0} {0>When this policy is enabled, Windows 2000 removes the places bar from the Windows common dialog.<}0{>Если используется эта политика, Windows 2000 удаляет панель местоположений из общего диалога Windows.<0}

{0>Application <}0{>Действие<0}

{0>Action<}0{>приложения<0}

{0>When this policy is set, applications that provide their own file/open dialogs must remove any equivalent functionality to the places bar.<}0{>Если используется эта политика, приложения, в которых используются собственные диалоги Файл/Открыть, должны удалить все эквивалентные возможности из панели местоположений.<0} {0>Applications that use the Windows common dialog API will automatically comply with this policy.<}0{>Приложения, в которых используется API общего диалога Windows, будут автоматически следовать данной политике.<0}

{0>Registry Information<}0{>Информация реестра<0}

{0>Key:<}0{>Параметр:<0} {0>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Comdlg32<}0{>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Comdlg32<0}

{0>Value Name:<}0{>Значение:<0} {0>NoPlacesBar<}0{>NoPlacesBar<0}

 

{0>Policy Setting<}0{>Настройка политики<0}

{0>Hide Common Dialog Back button<}0{>Скрыть кнопку Назад общего диалога<0}

{0>Description<}0{>Описание<0}

{0>When this policy is enabled, Windows 2000 removes the back button from the common dialog, preventing the user from browsing to the previous folder accessed from the dialog.<}0{>Если используется эта политика, Windows 2000 удаляет кнопку Назад из общего диалога, тем самым не позволяя пользователям просмотреть предыдущую папку, доступную в данном диалоге.<0}

{0>Application<}0{>Действие<0}

{0>Action<}0{>приложения<0}

{0>When this policy is set, applications that provide their own file/open dialogs must remove any back button functionality from these dialogs.<}0{>Если используется эта политика, то приложения, предоставляющие собственные диалоги Файл/Открыть, должны удалить все возможности использования кнопки Назад из этих диалогов.<0} {0>Applications that use the Windows common dialog API will automatically comply with this policy.<}0{>Приложения, которые используют API общего диалога Windows, будут автоматически  соответствовать данной политике.<0}

{0>Registry Information<}0{>Информация реестра<0}

{0>Key:<}0{>Параметр:<0} {0>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Comdlg32<}0{>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Comdlg32<0}

{0>Value Name:<}0{>Значение:<0} {0>NoBackButton<}0{>NoBackButton<0}

 

{0>Policy Setting<}0{>Настройка политики<0}

{0>Remove Common Dialog MRU dropdown<}0{>Удалить выпадающий список последних использовавшихся файлов общего диалога<0}

{0>Description<}0{>Описание<0}

{0>When this policy is enabled, Windows 2000 removes the MRU list from the common dialog.<}0{>Если используется эта политика, Windows 2000 удаляет список последних использовавшихся файлов из общего диалога.<0}

{0>Application <}0{>Действие <0}

{0>Action<}0{>приложения<0}

{0>When this policy is set, applications that provide their own file/open dialogs must not display an MRU list in these dialogs.<}0{>Если установлена эта политика, то приложения, предоставляющие свои собственные диалоги Файл/Открыть, не должны отображать список последних открывавшихся файлов в этих диалогах.<0} {0>Applications that use the Windows common dialog API will automatically comply with this policy.<}0{>Приложения, в которых используется API общих диалогов Windows, будут автоматически следовать данной политике.<0}

{0>Registry Information<}0{>Информация реестра<0}

{0>Key:<}0{>Параметр:<0} {0>HKCU\ Software\Microsoft\Windows\CurrentVersion\Policies\Comdlg32<}0{>HKCU\ Software\Microsoft\Windows\CurrentVersion\Policies\Comdlg32<0}

{0>Value Name:<}0{>Значение:<0} {0>NoFileMru<}0{>NoFileMru<0}

 

{0>To comply with the Application Specification, your application must adhere to the policies listed above.<}0{>Чтобы соответствовать Спецификации приложения, приложение должно следовать политикам, о которых рассказывалось выше.<0} {0>Note, however, that additional system-level policies exist and it is recommended that your application honor these as well.<}0{>Однако обратите внимание, что существуют дополнительные системные политики, поэтому рекомендуется учитывать их в своем приложении.<0}  {0>For example:<}0{>Например:<0}

·         {0>Don’t save settings at exit:<}0{>Не сохранять настройки при выходе:<0} {0>when this policy is set, applications should not save settings such as Window size/location and toolbar locations.<}0{>если используется эта политика, приложения не должны сохранять настройки, такие как местоположение/размер окна и расположение панелей инструментов.<0}

·         {0>Disable changes to Taskbar and Start Menu settings:<}0{>Не вносить изменения в Панель задач и настройки меню Пуск:<0} {0>When this policy is set, applications should not add or remove any items to the Start Menu.<}0{>Если используется эта политика, приложения не должны добавлять или удалять какие-либо пункты меню Пуск.<0}

{0>Registry settings for system-level policies can be found in the system.adm file on Windows 2000 systems.<}0{>Настройки реестра для системных политик могут находиться в файле system.adm системы Windows 2000.<0}

 {0>We recommend that developers review the system.adm file to ensure their applications respect any additional policies that the administrator may set.<}0{>Разработчикам рекомендуется просматривать файл system.adm, чтобы убедиться, что их приложения принимают во внимание все дополнительные политики, которые могут задать администраторы.<0}

 


6.   {0>Applications that create ADM files must properly store their ADM file settings in the registry<}0{> Приложения, которые создают файлы ADM, должны соответствующим образом хранить свои настройки файлов ADM в реестре <0}

{0>Administrative Template (ADM) files allow administrators to implement Group Policy settings.<}0{>Файлы Шаблона администрирования (ADM) позволяют администраторам применять настройки Политики Группы.<0} {0>If your application offers management capabilities via ADM files, it must store these settings under the following registry keys:<}0{>Если в Вашем приложении имеются возможности управления посредством файлов ADM, то приложение должно сохранять эти настройки в следующих подразделах реестра:<0}

{0>HKCU\Software\Policies for user specific policy settings<}0{>HKCU\Software\Policies для пользовательских настроек политики<0}

{0>HKLM\Software\Policies for machine specific policy settings<}0{>HKLM\Software\Policies для настроек политики компьютера<0}

 

{0>How to Pretest Applications for Data and Settings Management Requirements<}0{>Предварительное тестирование приложений на соответствие требованиям управления настройками и данными<0}

{0>To pretest correct storage of user data and defaults:<}0{>Предварительное тестирование корректного хранилища пользовательских данных и настроек по умолчанию:<0}

1.     {0>Clean-install Windows 2000 onto an NTFS partition.*<}0{>Установите Windows 2000 в новый раздел NTFS.*<0}

2.     {0>Log in as Administrator.<}0{>Зарегистрируйтесь как Администратор.<0}

3.     {0>Remove all members of the Power Users group.<}0{>Удалите всех членов группы Привилегированные Пользователи.<0}

·                     {0>By default, Interactive users are Power Users.<}0{>По умолчанию Взаимодействующие пользователи являются Привилегированными Пользователями.<0}

4.     {0>Install the application into the Program Files directory<}0{>Установите приложение в каталог Program Files.<0}

5.     {0>Log in as a normal (non-admin, non-power) User (e.g. «User1»).<}0{>Зарегистрируйтесь как обычный (не являющийся администратором или привилегированным) Пользователь (например, «User1»).<0}

·         {0>This must be a different account than the one used to install the application.<}0{>Эта учетная запись должна отличаться от той, которая использовалась для установки приложения.<0}

6.     {0>Verify that the application runs successfully as a normal User.<}0{>От лица обычного пользователя проверьте, что приложение работает успешно.<0}

·         {0>A normal user should be able to perform all advertised functionality<}0{>Обычный пользователь должен иметь возможность использовать все известные функциональные возможности<0}

·         {0>The application must degrade gracefully when a normal user attempts to perform any administrative functions exposed by the application (e.g. Changing System Time, System Environment Variables, System Security Settings etc...)<}0{>Если обычный пользователь пытается выполнить какую-либо функцию администрирования, предоставляемую приложением (например, изменение системного времени, переменных системного окружения, настройки защиты системы и др.), это приложение должно постепенно прекратить работу.<0}

7.     {0>Modify user preferences, create files, etc.<}0{>Измените настройки пользователя, создайте файлы и т.д.<0}

8.     {0>Log in as a different (non-admin, non-power) User (e.g. «User2»).<}0{>Зарегистрируйтесь под именем другого (не являющегося администратором или привилегированным) Пользователя (например, «User2»).<0}

9.     {0>Verify that User1's custom preferences do not apply to User2.<}0{>Проверьте, чтобы установки User1 не применялись для User2.<0}

10.  {0>Roam to a different machine that also has the application installed.<}0{>Перейдите к другому компьютеру, на котором также установлено это приложение.<0} {0>Log in as the same user as in step 6 (User1).<}0{>Зарегистрируйтесь как пользователь, имя которого Вы использовали на шаге 6 (User1).<0} {0>(Make sure that this user has a roaming profile enabled on the network.)<}0{>(Убедитесь, что у этого пользователя имеется профиль роуминга, доступный в сети.)<0}

11.  {0>Launch the application and verify that User1's custom preferences are available on the new machine.<}0{>Запустите приложение и убедитесь, что установки User1 доступны на новом компьютере.<0}

 

{0>* When testing in an NT4 environment, Security Configuration Manager should be used to configure the NT4 systems in a secure manner that is consistent with the Windows 2000 defaults.<}0{>* Во время тестирования в среде NT4 для конфигурирования системы NT4 безопасным способом, совместимым с настройками Windows 2000, установленными по умолчанию, необходимо использовать Диспетчер Конфигурации Защиты.<0}  {0>After installing Windows NT4 and the proper service pack, install the command line version of the Security Configuration Manager and configure the system using the w2kdefsec.inf security template available at http://msdn.microsoft.com/winlogo.<}0{>После установки Windows NT4 и соответствующего пакета исправлений установите версию Диспетчера Конфигурации Защиты для командной строки и сконфигурируйте систему с помощью шаблона защиты w2kdefsec.inf, который можно найти по адресу http://msdn.microsoft.com/winlogo.<0}  {0>Further instructions for applying this security template are available on the website.<}0{>Более подробные инструкции по использованию данного шаблона безопасности можно получить на этом web-сервере.<0}


 

 


{0>Chapter 5<}0{>Глава 5<0}

Describes the requirements for ensuring that the application provides a consistent, effective user interface.

{0>User Interface Fundamentals<}0{>Основы пользовательского интерфейса<0}

{0>Summary of Requirements for UI Fundamentals <}0{>Общая информация о требованиях к Основам пользовательского интерфейса<0}

{0>Rationale<}0{>Логическое обоснование<0}

·         {0>Consistency and accessibility among Windows-based applications increases customer confidence in Windows applications and the Windows platform.<}0{>Согласованность и доступность приложений для Windows повышают уверенность пользователей в приложениях Windows и платформе Windows.<0}

·         {0>Meeting UI requirements enables the use of sophisticated automation tools, including testing tools, task automation tools such as intelligent agents, and new input methods such as voice input.<}0{>Соответствие требованиям пользовательского интерфейса позволяет использовать сложные инструменты автоматизации, включая инструменты тестирования, инструменты автоматизации задач, такие как программируемые агенты, и новые способы ввода, например, голосовой ввод данных.<0}

·         {0>Organizations that use the Windows platforms require software to be usable by a wide range of users in order to comply with employment and equal rights legislation.<}0{>В организациях, работающих на платформах Windows, для соответствия закону о занятости и равных правах служащих необходимо, чтобы программное обеспечение использовалось большим количеством пользователей.<0}

·         {0>Meeting these requirements helps you ensure that software will be compatible with future enhancements that are planned for the Windows platform, including speech input, speech output, and intelligent task automation.<}0{>Соответствие этим требованиям помогает гарантировать совместимость данного программного обеспечения с будущими усовершенствованиями, которые планируются для платформы Windows, включая ввод голосовой информации, вывод голосовой информации и интеллектуальную автоматизацию задач.<0}

 

{0>Customer Benefits<}0{>Преимущества пользователей<0}

·         {0>Providing a consistent user interface reduces training, support, and testing costs for customers.<}0{>Совместимый пользовательский интерфейс сокращает затраты пользователей на подготовку, поддержку и тестирование.<0}

·         {0>Meeting UI requirements enables your business customers who are located in the United States to comply with the Americans with Disabilities Act, which requires that they provide reasonable accommodation for employees with disabilities.<}0{>Соответствие требованиям пользовательского интерфейса позволяет организациям, находящимся на территории Соединенных Штатов, обеспечивать соответствие американскому закону о нетрудоспособности, который требует, чтобы сотрудникам, имеющим увечья, были предоставлены соответствующие условия труда.<0} {0>It also enables government agencies, schools, and organizations receiving federal funding to comply with section 508 of the Rehabilitation Act, which was strengthened in the reauthorization of 1998. Similar legislation exists in a number of states and countries, and is pending in many more.<}0{>Кроме того, оно позволяет правительственным органам, школам и организациям получать государственное финансирование для соблюдения статьи 508 Закона о нетрудоспособности, новая версия которого была утверждена в 1998 г. Подобный закон существует в нескольких штатах и странах, а также находится на рассмотрении во многих странах.<0}

·         {0>Meeting UI requirements enables your customers to purchase software that meets standards for usability, such as HFES/ANSI 200 and ISO 9241. Such standards will continue to expand to incorporate high-level requirements for usability and accessibility.<}0{>Соответствие требованиям пользовательского интерфейса позволяет Вашим клиентам приобретать программное обеспечение, удовлетворяющее стандартам использования, таким как HFES/ANSI 200 и ISO 9241. Такие стандарты будут расширяться и включать требования высокого уровня по использованию и доступности программного обеспечения.<0}

·         {0>Meeting UI requirements enables over 49 million people in the United States who have disabilities to use your products.<}0{>Соответствие требованиям пользовательского интерфейса дает возможность работать более чем 49 миллионам людей с физическими недостатками в Соединенных Штатах, использующим Ваш продукт.<0} {0>The U.S. Access Board estimates that one in five people, and one in eight Internet users, have some form of functional limitation.<}0{>Департамент по допуску США определил, что каждый пятый человек и каждый восьмой пользователь Интернет имеет некоторые формы физических недостатков.<0}

·         {0>Meeting UI requirements enables organizations to benefit by keeping valuable employees, even when they receive a permanent or temporary disability, such as repetitive strain injury associated with typing or using a mouse, or experience functional limitations that are a natural part of aging.<}0{>Соответствие требованиям пользовательского интерфейса дает возможность организациям получать выгоду вследствие наличия ценных сотрудников, даже если они постоянно или временно недееспособны, например, постоянно испытывают неудобства при вводе данных с клавиатуры или при использовании мыши, или имеют физические недостатки, вызванные естественным старением.<0}

 


{0>Requirements<}0{>Требования<0}

1.     {0>Support standard system size, color, font, and input settings<}0{>Поддержка стандартного размера, цвета, шрифта и настроек ввода системы<0}

2.     {0>Ensure compatibility with the High Contrast option<}0{>Обеспечение совместимости с параметром Высокая Контрастность<0}

3.     {0>Provide documented keyboard access to all features<}0{>Предоставление описанного в документации доступа с клавиатуры ко всем функциям<0}

4.     {0>Provide notification of the keyboard focus location<}0{>Предоставление информации о местоположении фокуса ввода с клавиатуры<0}

5.     {0>Do not rely exclusively on sound <}0{>Отсутствие зависимости от звука<0}

6.     {0>Do not place shortcuts to documents, help, or uninstall in the Start Menu<}0{>Отсутствие ярлыков для документов, справки или функции удаления в меню Пуск.<0}

7.     {0>Support multiple monitors<}0{>Поддержка нескольких мониторов.<0}

 

{0>References<}0{>Справочная информация<0}

{0>Guidelines for accessibile software design:<}0{>Принципы разработки доступного программного обеспечения:<0} {0>See http://www.microsoft.com/enable <}0{>Обратитесь к серверу http://www.microsoft.com/enable <0}

{0>Microsoft Active Accessibility:<}0{>Microsoft Active Accessibility:<0} {0>See the Platform SDK  <}0{>Обратитесь к руководству Platform SDK  <0}

{0>Microsoft media player:<}0{>Медиаплейер фирмы Microsoft:<0} {0>http://www.microsoft.com/windows/mediaplayer <}0{>http://www.microsoft.com/windows/mediaplayer <0}

{0>Microsoft Windows Guidelines for User Interface Design<}0{>Принципы разработки пользовательского интерфейса для Microsoft Windows<0}

{0>Available from MSDN and MS Press.<}0{>Обратитесь к MSDN и MS Press.<0}

{0>How to Comply with Requirements for UI Fundamentals<}0{>Соответствие требованиям по основам пользовательского интерфейса<0}

1.   {0>Support standard system size, color, font, & input settings <}0{>Поддержка стандартного размера, цвета, шрифта и настроек ввода системы<0}

{0>Your application must read and use system-wide user interface settings when displaying customized controls or window content.<}0{>При отображении настраиваемых элементов управления или содержимого окна Ваше приложение должно считывать и использовать системные настройки пользовательского интерфейса.<0}  {0>Standard controls provided by USER32.DLL and COMCTL32.DLL automatically support all of the required settings.<}0{>Стандартные элементы управления, поставляемые USER32.DLL и COMCTL32.DLL, автоматически поддерживают все необходимые настройки.<0}  {0>Applications can add support for these settings to their own windows by calling DefWindowProc in the window procedure.<}0{>Приложения могут добавлять поддержку этих настроек в свои окна, вызвав DefWindowProc в процедуре окна.<0} {0>Applications should be careful to handle these settings when:<}0{>Приложения должны аккуратно обращаться с этими настройками:<0}

·         {0>Creating custom controls<}0{>При создании нестандартных элементов управления<0}

·         {0>Creating owner-drawn controls<}0{>При создании элементов управления, отображаемых владельцами<0}

·         {0>Superclassing or subclassing to alter the normal standard control behavior<}0{>При использовании родительских и дочерних классов для изменения обычного режима работы стандартного элемента управления<0}

·         {0>Handling a message and not calling DefWindowProc (especially when drawing any non-client areas)<}0{>При обработке сообщения без вызова DefWindowProc (особенно при отображении любых областей, не являющихся клиентскими)<0}

·         {0>Handling low-level input that bypasses normal mouse and keyboard messages (such as double-click and shift-state detection)<}0{>При обработке ввода на низком уровне, который игнорирует обычные сообщения клавиатуры и мыши (например, двойной щелчок и нажатие клавиши Shift)<0}

 

{0>These settings are queried using the GetSysColor, GetSystemMetrics, and SystemParametersInfo functions.<}0{>Эти настройки устанавливаются с помощью функций GetSysColor, GetSystemMetrics и SystemParametersInfo.<0} {0>For more information, see the Microsoft Platform SDK, or http://premium.microsoft.com/msdn/library/sdkdoc/sysmgmt/sysinfo_8fjn.htm <}0{>Для получения дополнительной информации обратитесь к Microsoft Platform SDK или http://premium.microsoft.com/msdn/library/sdkdoc/sysmgmt/sysinfo_8fjn.htm <0}

{0>http://premium.microsoft.com/msdn/library/sdkdoc/sysmgmt/sysinfo_4p67.htm <}0{>http://premium.microsoft.com/msdn/library/sdkdoc/sysmgmt/sysinfo_4p67.htm <0}

 

{0>All applications must support:<}0{>Все приложения должны поддерживать:<0}

  SPI_GETHIGHCONTRAST

 

{0>All GetSysColor settings are required for menus, dialog boxes, and other standard UI elements.<}0{>Все настройки GetSysColor являются обязательными для меню, диалоговых окон и других стандартных элементов пользовательского интерфейса.<0}

  {0>See Section 2, below.<}0{>См. ниже раздел 2.<0}

 

  SPI_GETWORKAREA

 

{0>Primary display monitor work area size <}0{>Размер рабочей области основного экрана<0}

 

{0>Customized fields for text selection or editing must support:<}0{>Нестандартные поля для выделения или редактирования текста должны поддерживать:<0}

  SPI_GETCARETWIDTH

 

{0>Caret width in edit field <}0{>Ширина курсора в поле редактирования <0}

 

{0>Customized combo boxes must support:<}0{>Нестандартные выпадающие списки должны поддерживать:<0}

  SPI_GETCOMBOBOXANIMATION

 

{0>Slide-open effect for combo boxes must be disabled when this setting is false<}0{>Если значением данной настройки является FALSE, эффект соскальзывания для выпадающих списков должен быть отключен<0}

 

{0>Customized keyboard handlers (low level input) must support:<}0{> Нестандартные обработчики клавиатуры (низкоуровневый ввод) должны поддерживать:<0}

  SPI_GETKEYBOARDDELAY

  SPI_GETKEYBOARDSPEED

 

{0>Keyboard repeat-delay setting<}0{>Настройка задержки перед началом повтора символов<0}

{0>Keyboard repeat-speed setting<}75{>Настройка скорости повтора символов<0}

  SPI_GETFILTERKEYS

{0>Expanded range for above<}0{>Расширенный интервал для указанных выше настроек<0}

 

{0>Customized menus must support:<}0{>Нестандартные меню должны поддерживать:<0}

  SM_CYMENUCHECK, CXMENUCHECK

{0>Default menu check-mark dimensions<}0{>Установленные по умолчанию размеры флажка меню<0}

  SM_CYMENU

{0>Single-line menu bar height <}0{>Высота строки меню<0}

  SPI_GETNONCLIENTMETRICS

      IfMenuHeight

      lfMenuFont

      lfMessageFont

 

{0>Menu bar height <}0{>Высота меню<0}

{0>Menu bar font<}0{>Шрифт меню<0}

{0>Message box font<}0{>Шрифт окна сообщения<0}

  SPI_GETSELECTIONFADE

 

{0>Menu fade must be disabled when this setting is FALSE<}0{>Если значением данной настройки является FALSE, то функция исчезновения элементов меню должна быть отключена<0}

  SPI_GETMENUANIMATION

 

{0>Menu animation must be disabled when this setting is FALSE<}90{>Если значением данной настройки является FALSE, то эффекты анимации меню должны быть отключены<0}

  SPI_GETMENUFADE

 

{0>Menu fade animation must be disabled when this setting is FALSE<}93{>Если значением данной настройки является FALSE, то эффекты анимации исчезновения меню должны быть отключена<0}

 

{0>Specialized mouse functions must support:<}0{>Указанные функции мыши должны поддерживать:<0}

 

  SM_CYDOUBLECLK,

  SM_CXDOUBLECLK

{0>Maximum vertical and horizontal distances the mouse can move between successive clicks and still be interpreted as a double-click<}0{>Максимально допустимое вертикальное и горизонтальное расстояние, на которое мышь может сдвинуться между последовательными щелчками, интерпретируемыми как двойной щелчок.<0}

  SM_CYDRAG, SM_CXDRAG

 

{0>Minimum vertical and horizontal distances the mouse must be moved with button down to start a drag operation<}0{>Минимальное вертикальное и горизонтальное расстояние, на которое должна сдвинуться мышь при нажатой кнопке, для начала операции буксировки<0}

  SPI_GETMOUSEHOVERHEIGHT

  SPI_GETMOUSEHOVERWIDTH

{0>Height and width of the rectangle within which the mouse pointer has to stay to activate hover effects<}0{>Высота и ширина прямоугольника, внутри которого должен находиться указатель мыши для активизации эффекта ожидания ввода<0}

  SPI_GETMOUSEHOVERTIME

{0>Mouse hover time <}0{>Время ожидания ввода<0}

 

{0>Customized scroll bars must support:<}0{>Нестандартные полосы прокрутки должны поддерживать:<0}

  SM_CYHSCROLL

  SM_CXVSCROLL

{0>Height of horizontal scroll bar <}0{>Высота горизонтальной полосы прокрутки<0}

{0>Width of a vertical scroll bar<}0{>Ширина вертикальной полосы прокрутки<0}

                                                                                               

{0>Application sounds must support:<}74{>Звуковые функции приложения должны поддерживать:<0}

  SPI_GETSHOWSOUNDS

{0>When TRUE, the application must present all information visually rather than by sound alone<}0{>Если значением является TRUE, то приложение должно представлять всю информацию визуально, а не только посредством звуковых эффектов<0}

 

{0>Customized tooltips must support:<}0{>Нестандартные подсказки должны поддерживать:<0}

 

  SPI_GETNONCLIENTMETRICS

      SPI_lfStatusFont

{0>Font used in status bars and tooltips<}0{>Шрифт, используемый в строках состояния или подсказках<0}

  SPI_GETTOOLTIPANIMATION

 

{0>ToolTip animation must be disabled when this setting is FALSE<}0{>Если значением является FALSE, то анимация подсказок должна быть отключена<0}

 

{0>Customized window frames must support:<}0{> Нестандартные кадры окон должны поддерживать:<0}

  SM_CYSMCAPTION

 

{0>Small caption height<}0{>Высота заголовка<0}

  SPI_GETNONCLIENTMETRICS

      IfCaptionFont

 

{0>Caption font information<}0{>Информация о шрифте заголовка<0}

  SM_CYBORDER, SM_CXBORDER

{0>Minimum thickness of a line, in pixels.<}0{>Минимальная толщина линии в пикселах.<0} {0>Applications should not draw lines thinner than this because on high-resolution monitors a 1-pixel line might be nearly invisible.<}0{>Приложения не должны рисовать линии тоньше, чем указано, потому что на мониторах с высоким разрешением линия толщиной в 1 пиксел будет практически не видна.<0} {0>(The display driver sets this number, and it is also increased when the user selects the Custom System Font Size in Control Panel.)<}0{>(Это значение устанавливается драйвером экрана и увеличивается пользователем, когда он выбирает Специальный размер системного шрифта на Панели управления).<0}

  SM_CXEDGE

  SM_CYEDGE

{0>Thickness of a 3D edge, in pixels.<}0{>Толщина трехмерной границы в пикселах.<0} {0>Each 3D edge is comprised of two adjacent lines, so the thickness is 2 * SM_CxBORDER.<}0{>Каждая трехмерная граница состоит из двух смежных линий, таким образом ее толщина равна 2 * SM_CxBORDER.<0}

  SM_CXSIZEFRAME

  SM_CYSIZEFRAME

 

{0>Thickness of the complete resizable window frame, in pixels.<}0{>Толщина рамки окна, размер которого можно изменять, в пикселах.<0}

  SM_CYFIXEDFRAME

  SM_CXFIXEDFRAME

 

{0>Thickness of a non-resizable window frame, in pixels.<}0{>Толщина рамки окна, размер которого нельзя изменять, в пикселах.<0} {0>This is made up of one 3D edge whose thickness is SM_CxEDGE plus one line of space whose thickness is SM_CxBORDER.<}0{>Она состоит из одной трехмерной границы, толщина которой равна SM_CxEDGE плюс одна пустая линия, толщина которой равна SM_CxBORDER.<0}

 

2.   {0>Ensure compatibility with the High Contrast option<}0{>Обеспечение совместимости с параметром Высокая Контрастность<0}

{0>Your application must be compatible with the High Contrast option, which indicates that the user requires a high degree of contrast to improve screen legibility.<}0{>Ваше приложение должно быть совместимо с параметром Высокая контрастность, который указывает на то, что пользователю необходима более высокая степень контрастности для улучшения четкости экрана.<0} {0>Standard controls provided by USER32.DLL and COMCTL32.DLL automatically support all of the required settings.<}0{>Стандартные элементы управления, предоставляемые USER32.DLL и COMCTL32.DLL, автоматически поддерживают все необходимые настройки.<0} {0>Applications only need to support it explicitly when creating custom window classes or controls or altering the normal behavior of standard windows or controls.<}0{>Приложения должны осуществлять поддержку таких настроек только при создании нестандартных классов или элементов управления окна, а также при изменении обычного поведения стандартных окон и элементов управления.<0}

{0>Applications can determine the value of the High Contrast option using the SystemParametersInfo function with the SPI_GETHIGHCONTRAST constant.<}0{>Приложения могут определять значение параметра Высокая контрастность с помощью функции SystemParametersInfo с константой SPI_GETHIGHCONTRAST.<0} {0>When this option is set, your application must:<}0{>Если этот параметр установлен, то приложение должно:<0}

·         {0>Display all menus and dialog boxes using the color scheme returned by GetSysColor function.<}0{>Отображать все меню и диалоговые окна, используя цветовую схему, возвращаемую функцией GetSysColor.<0} {0>This also applies to any other UI elements that are required to adjust colors in the application’s UI.<}0{>Это относится также ко всем остальным элементам пользовательского интерфейса, предназначенных для настройки цветов в пользовательском интерфейсе приложения.<0}

·         {0>Allow the user to adjust the colors used to display everything in the application’s windows.<}0{>Разрешать пользователям изменять цвета, используемые для отображения информации в окнах приложений.<0}

·         {0>This must be possible using display options that override the colors normally used by the application or specified in the document, and must not alter the content of the document or affect other users.<}0{>Это должно производиться путем изменения настроек отображения, которые отменяют цвета, обычно используемые приложением или указанные в документе, и не должно изменять содержание документа или влиять на других пользователей.<0}

·         {0>The preferred method is to use the corresponding colors returned by the GetSysColor function, but the application can provide its own display options.<}0{>Наилучшим способом является использование соответствующих цветов, возвращаемых функцией GetSysColor, но приложение также может обеспечивать собственные настройки экрана.<0}

·         {0>Always draw foreground objects in colors designated as foreground colors and fill backgrounds with the corresponding background colors.<}0{>Всегда выделяйте объекты переднего плана цветами, определенными как цвета переднего плана и заполняйте фон соответствующими фоновыми цветами.<0} {0>This is required whether colors are selected using the GetSysColor function or through the application’s own options.<}0{>Это требование не зависит от того, выбраны ли цвета с помощью функции GetSysColor или являются собственными настройками приложения.<0} {0>For example, anything drawn using window text color (COLOR_WINDOWTEXT) must be drawn on the window background color (COLOR_WINDOW), and anything drawn using highlight text color (COLOR_HIGHLIGHTTEXT) must be drawn on highlight background (COLOR_HIGHLIGHT).<}0{>Например, все объекты, которые нарисованы цветом текста окна (COLOR_WINDOWTEXT), должны быть нарисованы на фоновом цвете окна (COLOR_WINDOW), а все объекты, нарисованные с использованием цвета выделенного текста (COLOR_HIGHLIGHTTEXT), должно быть нарисованы на выделенном фоне (COLOR_HIGHLIGHT).<0}

·         {0>Make sure any information normally conveyed by color is available through other means, such as sound or a visual display, because the user may have chosen a monochrome appearance scheme.<}0{>Гарантировать, что вся информация, передаваемая цветом, передается также и другими способами, например звуком или видом экрана, потому что пользователь мог выбрать черно-белую цветовую схему.<0}

·         {0>Omit any images or patterns drawn behind text, and make sure any important information conveyed with such backgrounds is available through other means.<}0{>Избегать рисунков и узоров, нарисованных на фоне текста, и гарантировать, что любая важная информация, представленная таким фоном доступна другими средствами.<0}

{0>Note:<}0{>Замечание:<0} {0>Users can adjust the High Contrast option from the Accessibility Options section of Control Panel, by selecting the Display tab and then the Use High Contrast check box.<}0{>Пользователи могут изменять режим высокой контрастности из раздела Специальные возможности Панели управления, выбрав закладку Экран и установив флажок Высокая контрастность.<0}

{0>Users can adjust the values returned by GetSysColors using the Display section of Control Panel, by selecting the Appearance tab.<}0{>Пользователи могут изменять значения, возвращаемые функцией GetSysColor, с помощью раздела Экран Панели управления, выбрав закладку Оформление.<0}

{0>The High Contrast option can be used with any appearance scheme, and selecting a scheme through the Display section of Control Panel does not affect the High Contrast option setting.<}0{>Режим высокой контрастности может использоваться с любой схемой оформления, причем выбор схемы в разделе Экран Панели управления не меняет значение настройки Высокая контрастность.<0}


 

{0>Exception:<}0{>Исключение:<0} {0>Certain application features may be exempted from High Contrast requirements when the use of color is intrinsic and indispensable to the goal of the feature.<}0{>Некоторые функции приложения могут не подчиняться требованиям Высокой контрастности, если использование цвета существенно и необходимо для этих функций.<0} {0>Examples include:<}0{>Примерами таких функций являются:<0}

·         {0>Palettes or swatches where the user selects from a range of displayed colors.<}0{>Палитры и образцы, где пользователь выбирает цвет из набора отображаемых цветов.<0} {0>In this case, the application can display the color but must provide a text description such as a name (light blue) or numeric value (RGB 0, 255, 255).<}0{>В этом случае приложение может отображать цвета, но должно также предоставлять текстовое описание, например, название цвета (светло-голубой) или численное значение (RGB 0,255,255).<0}

·         {0>Animation, video, and graphic images when the information content is available through other means.<}0{>Анимация, видео или графические изображения, когда содержащаяся в них информация может быть получена другими способами.<0}

·         {0>Entire applications are exempted only when it can be shown that the application has no value without the use of color.<}0{>Приложение целиком может быть исключением, только если оно не имеет смысла без использования цвета.<0} {0>For example, painting programs may be exempted, but drawing programs where the user manipulates shapes would not be exempted.<}0{>Например, программы для рисования являются исключением, а чертежные программы, где пользователь работает с фигурами – нет.<0}

·         {0>Reference and educational titles will not be exempted.<}0{>Справочные и образовательные программы не являются исключениями.<0}

 

{0>When the major features in the application support the High Contrast option, exceptions may also be made for minor features that are not required for the operation of the program.<}0{>Если основные функции приложения поддерживают режим Высокой контрастности, исключения могут быть сделаны для функций, несущественных для работы с программой.<0}

{0>Requests for exemptions are judged on a case-by-case basis.<}0{>Вопрос, может ли приложение считаться исключением, решается в каждом отдельном случае.<0} {0>You must detail these exceptions in your Vendor Questionnaire.<}0{>Вы должны подробно описать все исключения в Анкете поставщика.<0}

3.   {0>Provide documented keyboard access to all features<}0{>Предоставление описанного в документации доступа с клавиатуры ко всем функциям<0}

{0>Your application must provide keyboard access to all features, so that a mouse or other pointing device is not required for its use.<}0{>Ваше приложение должно так обеспечивать доступ с клавиатуры ко всем своим функциям, чтобы не требовалось использование мыши или другого устройства ввода.<0} {0>Standard controls provided by USER32.DLL and COMCTL32.DLL automatically support all of the required settings.<}0{>Стандартные элементы управления, предоставляемые библиотеками USER32.DLL и COMCTL32.DLL автоматически поддерживают все необходимые настройки.<0} {0>Applications must explicitly provide this support only when:<}0{>Приложения должны обеспечивать такую поддержку только при:<0}

·         {0>Creating custom window classes or controls<}0{>Создании нестандартных классов окон и элементов управления<0}

·         {0>Altering the normal behavior of standard windows or controls<}0{>Изменении обычного поведения стандартных окон и элементов управления<0}

·         {0>Assigning keyboard navigation in dialog boxes.<}0{>Назначении навигации с клавиатуры в диалоговых окнах.<0}

{0>User interface elements that rely on standard Windows keyboard documentation should support all equivalent standard window class keyboard behavior.<}0{>Элементы интерфейса пользователя, полагающиеся на стандартную документацию клавиатуры Windows, должны поддерживать стандартное поведение клавиатуры в классах окон.<0} {0>If a specific user interface element, such as a custom control, requires a mouse or other pointing device, its functionality must also be available through keyboard input.<}0{>Если для какого-либо элемента интерфейса пользователя, например нестандартного элемента управления, требуется мышь или другое устройство ввода, необходимо также предоставить доступ к нему и с помощью клавиатуры.<0}

{0>All keyboard techniques required to operate the application must be documented, except for elements that follow Windows conventions, e.g.,  standard menus and controls.<}0{>Все методы, необходимые для работы с приложением с клавиатуры, должны быть документированы, за исключением элементов, следующих стандартам Windows, например, стандартных меню и элементов управления.<0} {0>Applications must document non-intuitive complex procedures, customized window class usage, and controls that do not conform to normal conventions.<}0{>В приложениях должны быть документированы все неинтуитивные сложные процедуры, нестандартное использование классов окон и элементы управления, не подчиняющиеся обычным правилам.<0} {0>The product’s standard documentation must either include this information or direct the user to the appropriate documents.<}0{>Стандартная документация на программный продукт должна или включать эту информацию, или направлять пользователя к соответствующим документам.<0}

{0>Example:<}0{>Пример:<0} {0>Information can be delivered by online help, with text file on the product CD, or through the product’s Web site.<}0{>Информация может предоставляться в виде справки, текстового файла на компакт-диске с продуктом или Web-узла продукта.<0}

{0>Note:<}0{>Замечание:<0} {0>Keyboard behavior of standard window classes is documented in The Microsoft Windows Keyboard Guide, which is available on http://microsoft.com/enable.<}0{>Реакция на клавиатурный ввод стандартных классов окон документирована в руководстве The Microsoft Windows Keyboard Guide, которое можно найти по адресу http://microsoft.com/enable.<0}


 

{0>Exception:<}0{>Исключения:<0} {0>Exemptions may be made in the following cases:<}0{>Исключения могут быть сделаны в следующих случаях:<0}

·         {0>Applications that rely on specialized input devices, such as graphing tablets.<}0{>Приложения, полагающиеся на специализированные устройства ввода, например графические планшеты.<0}

·         {0>Situations where the mouse targets are no larger than a pixel.<}0{>Ситуации, когда мышь указывает на объекты размером не более одного пиксела.<0} {0>For example, painting with the mouse.<}0{>Например, рисование мышью.<0} {0>These features may rely on the MouseKeys feature built into the 32-bit Microsoft Windows operating systems to allow users to move the mouse pointer using the keyboard.<}0{>Такая функция может полагаться на функцию MouseKeys, встроенную в 32-разрядную операционную систему Microsoft Windows и позволяющую пользователям перемещать указатель мыши с помощью клавиатуры.<0} {0>However, this is not acceptable for drawing when the user can independently manipulate separate text and graphic objects.<}0{>Однако это неприемлемо для черчения, когда пользователь может независимо управлять текстовыми и графическими объектами.<0} {0>This exemption applies to individual features within a product, not to the entire application.<}0{>Это исключение применимо к отдельным функциям продукта, а не ко всему приложению.<0}

 

{0>When the major features in the application have keyboard access, exceptions may be made for minor features that are not required for the operation of the program.<}0{>Если к основным функциям приложения предоставляется доступ с клавиатуры, то для функций, необязательных для работы с программой, может быть сделано исключение.<0}

{0>Requests for exemptions are judged on a case-by-case basis.<}0{>Вопрос, может ли функция считаться исключением, решается в каждом отдельном случае.<0} {0>You must detail these exceptions in your Vendor Questionnaire.<}0{>Вы должны подробно описать все исключения в Анкете поставщика.<0}

 

4.   {0>Expose the location of the keyboard focus <}0{>Предоставление информации о местоположении фокуса ввода с клавиатуры<0}

{0>Your application must visually indicate the location of the keyboard focus, and notify other software of this location by using Microsoft Active Accessibility™ or by moving the system caret.<}0{>Ваше приложение должно визуально отмечать положение фокуса клавиатуры и уведомлять другие программы о его положении с помощью Microsoft Active Accessibility™ или путем перемещения текстового курсора.<0}

{0>The application must display a visual focus indicator at all times when it is the active window so users can anticipate the effects of keystrokes they type.<}0{>Приложение должно отображать визуальный индикатор фокуса все время, пока его окно является активным, чтобы пользователь мог предугадать эффект нажатия клавиш.<0} {0>Exposing its location to other software enables the use of the panning software supported by many display adapters and accessibility aids such as the Magnifier accessory included with Windows 98 and Windows 2000.<}0{>Предоставление информации о положении курсора другим программам позволяет использовать панорамное программное обеспечение, поддерживаемое многими адаптерами и средствами поддержки специальных возможностей, такими как Экранная лупа, поставляемая с Windows 98 and Windows 2000.<0}

{0>When it is not feasible to use Microsoft Active Accessibility, the application may indicate the focus location by moving the system caret.<}0{>Если использование Microsoft Active Accessibility не представляется возможным, приложение может отображать положение фокуса перемещением текстового курсора.<0} {0>The caret is normally the blinking vertical bar that the user sees when editing text, but it can be placed anywhere on the screen, made any shape or size, and even made invisible.<}0{>Обычно текстовый курсор представляет собой мигающую вертикальную черту, которую пользователь видит при вводе текста, но его можно поместить в любую точку экрана, изменять его форму и размер и даже сделать невидимым.<0} {0>If it is invisible, it can be moved to indicate the focus location to applications without disturbing what the user sees on the screen.<}0{>Если он невидимый, его можно перемещать для указания положения фокуса для других приложений, не изменяя содержания экрана.<0}

{0>To create an invisible caret call the CreateCaret function to set the caret’s size and shape and the SetCaretPos function to move it to wherever you are drawing the visual focus indicator (the highlighted cell, icon, button, and so on).<}0{>Для создания невидимого курсора вызовите функцию CreateCaret, чтобы задать размер и форму курсора, и функцию SetCaretPos, чтобы переместить его в место отображения индикатора фокуса (выделенная ячейка, пиктограмма, кнопка и т.д.).<0} {0>Note that it is present but remains invisible unless you explicitly make it visible.<}0{>Курсор будет оставаться невидимым до тех пор, пока Вы явно не сделаете его видимым.<0}

{0>Each time the focus moves to a new object with a different size, the application should call DestroyCaret and then use CreateCaret to specify the size of the new object.<}0{>Каждый раз, когда фокус перемещается к новому объекту, имеющему другие размеры, приложение должно вызвать функцию DestroyCaret, а затем функцию CreateCaret для указания размера нового объекта.<0} {0>The system caret must cover the bounding rectangle of the screen element, so that screen magnification tools can allow the user to zoom-in on different portions of the region.<}0{>Курсор должен закрывать прямоугольник, окружающий элемент на экране, чтобы средства увеличения экрана предоставляли возможность пользователю увеличивать различные части области ввода.<0}

{0>An application should only display focus and selection indicators when they are in the active window.<}0{>Приложение должно отображать индикаторы фокуса ввода и выделения только в активном окне.<0} {0>When the window loses activation, the application should remove the visual indicator and call the DestroyCaret function.<}0{>Если окно неактивно, приложение должно удалить визуальный индикатор и вызвать функцию DestroyCaret.<0}

{0>Exception:<}0{>Исключение:<0} {0>Applications and features that are exempt from the keyboard access requirement as described earlier in this section are also exempt from the requirement to expose keyboard focus location.<}0{>Приложения и функции, являющиеся исключениями из требования доступа с клавиатуры, как описано выше в данном разделе, также являются исключениями из требования отображения положения фокуса клавиатурного ввода.<0} {0>However, it is strongly recommended that applications expose the keyboard focus location for any feature that provides keyboard access.<}0{>Однако рекомендуется отображать положение фокуса клавиатурного ввода для любой функции, обеспечивающей доступ с клавиатуры.<0}

5.   {0>Do not rely exclusively on sound <}0{>Отсутствие зависимости от звука<0}

{0>Applications should not convey important information exclusively by sound.<}0{>Приложения не должны передавать важную информацию только с помощью звуковых эффектов.<0} {0>If sound is the default method for conveying information, the application must provide other options to express this information.<}0{>Если звук является методом предоставления информации по умолчанию, приложение также должно обеспечивать другие варианты выражения этой информации.<0}

{0>Closed captioning or synchronized highlighting is recommended when conveying information by audio and video content longer than several seconds.<}0{>Субтитры или синхронное подсвечивание текста рекомендуется, если представление информации с помощью аудио- или видеосредств длится более нескольких секунд.<0} {0>Closed captioning is supported by the Windows Media Player since version 5.2.<}0{>Субтитры поддерживаются Windows Media Player, начиная с версии 5.2.<0}  {0>See http://www.microsoft.com/enable and http://microsoft.com/windows/mediaplayer for more information.<}0{>Дополнительную информацию можно получить по адресам http://www.microsoft.com/enable и http://microsoft.com/windows/mediaplayer.<0}

{0>The application must provide visual equivalents of all information normally provided by sounds alone when the ShowSounds option is selected.<}0{>Приложение должно обеспечивать визуальные эквиваленты всей информации, обычно передаваемой только звуком, если выбран параметр Визуальное оповещение.<0} {0>If the ShowSounds option is selected when the application starts, the application must either turn on these additional visuals or explicitly ask the user whether they would like them.<}0{>Если этот параметр установлен при запуске приложения, необходимо или включить визуальные эффекты, или в явном виде запросить пользователя, надо ли их использовать.<0}

{0>The user may select the ShowSounds option in the Control Panel to notify applications that all information should be conveyed visually rather than relying on audible means.<}0{>Пользователь может выбрать параметр Визуальное оповещение в Панели управления, чтобы информировать приложения, о том что вся информация должна передаваться визуально, а не с помощью аудиоэффектов.<0} {0>This option is set through the Accessibility Options section of the Control Panel.<}0{>Данный параметр устанавливается в разделе Специальные возможности Панели управления.<0} {0>Applications can determine the current value of the ShowSounds option with the SystemParametersInfo function to query SPI_GETSHOWSOUNDS.<}0{>Приложения могут определить текущее значение параметра Визуальное оповещение, вызвав функцию SystemParametersInfo для запроса SPI_GETSHOWSOUNDS.<0}

{0>Applications are not required to display visual equivalents of music or other sounds that convey no information.<}0{>Приложения могут не отображать визуальные эквиваленты музыки и других звуков, не несущих информации.<0} {0>However, they are required to display a visual indication that such sounds are playing when the ShowSounds flag is set.<}0{>Однако они должны отображать визуальное уведомление о том, что такие звуки проигрываются, если установлен флажок Визуальное оповещение.<0}  {0>When a sound merely emphasizes a visible event, the application does not need to provide an additional visual indication that the sound is present.<}0{>Если звук только усиливает видимое событие, приложение может не представлять дополнительной индикации звука.<0} {0>For example, when a message box appears, it is often accompanied by a warning sound.<}0{>Например, часто появление окна сообщения сопровождается предупреждающим звуком.<0}  {0>When a user presses an invalid direction key, the selection fails to move and a warning beep is produced.<}0{>Когда пользователь нажимает некорректную клавишу перемещения курсора, выделение не перемещается и раздается предупреждающий сигнал.<0} {0>In these cases the application does not need to display additional visual feedback.<}0{>В этих случаях приложение может не отображать дополнительной визуальной информации.<0} {0>However, when user input or an external event can trigger results indicated or distinguished exclusively by sound, additional visual notification is required.<}0{>Однако если ввод пользователя или внешнее событие может повлиять на результат, указываемый или различаемый только с помощью звука, требуется дополнительное визуальное уведомление.<0}

 

6.   {0>Do not place shortcuts to documents, help, or uninstall in the Start Menu<}0{>Отсутствие ярлыков для документов, справки или функции удаления в меню Пуск<0}

{0>The Start Menu is designed to give users easy access to launch applications.<}0{>Главное меню разработано так, чтобы ускорить запуск приложений пользователями.<0} {0>Usability studies show that when the Start Menu becomes too cluttered, users can no longer do this.<}0{>Исследования показали, что при переполнении Главного меню быстрый запуск становится невозможен.<0}

·         {0>Do not place shortcuts to documents, such as readme files, in the Start Menu.<}0{>Не помещайте ярлыки для документов, таких как файлы readme, в Главное меню.<0} {0>If you have important information that the user should see, consider displaying that information during the install process.<}0{>Если пользователь должен получить какую-либо важную информацию, предъявляйте ее в процессе установки.<0}

·         {0>Do not put shortcuts to help files in the Start Menu.<}0{>Не помещайте ярлыки для файлов справки в Главное меню.<0} {0>Users can access help once they launch the application.<}0{>Пользователи получат доступ к справке после запуска приложения.<0}

·         {0>Do not place shortcuts to uninstall in the Start Menu.<}0{>Не помещайте ярлыки для удаления программ в Главное меню.<0} {0>The Add/Remove Program control panel applet provides this functionality.<}0{>Эта функция доступна из пункта Установка/удаление программ в панели управления.<0}

{0>The following behaviors, though not required, are recommended:<}0{>Рекомендуется (но не обязательно) производить следующие действия:<0}

·         {0>Place your icon to launch your application directly under Start -> Programs.<}0{>Поместите пиктограмму для запуска приложения непосредственно в папку Пуск -> Программы.<0}  {0>Avoid placing it in a folder under programs.<}0{>Не помещайте ее в отдельную папку.<0} {0>In particular, do not create a folder in the Start Menu in which you only put one item.<}0{>Особенно не следует создавать в Главном меню папку для одного элемента.<0} {0>Often, applications will create a folder based on Company name and then put a single shortcut to launch the application inside that folder.<}0{>Часто приложения создают папку, имеющую название фирмы и помещают в нее единственный ярлык для запуска приложения.<0} {0>Instead, consider renaming the shortcut to include the company name and dropping the use of the folder.<}0{>Вместо этого переименуйте ярлык таким образом, чтобы название включало в себя название фирмы и откажитесь от использования папки.<0}


{0>Programs à   My Company à    My App<}0{>Программы -> Моя фирма -> Мое приложение<0}                 {0>(Avoid this)<}0{>(Избегайте этого)<0}

{0>Programs à   My Company My App<}0{>Программы -> Моя фирма Мое приложение<0}                                      {0>(Recommended)<}0{>(Рекомендуется)<0}

 

·         {0>Do not put anything in the top of the Start Menu, as users consider this their own personal space.<}0{>Не помещайте ничего в вершину Главного меню, так как пользователи считают ее собственном пространством.<0}

·         {0>If you have support applications, tools, or utilities associated with your application, and you wish to publish these in the Start Menu, create a single folder in the Start Menu as a peer of the icon to launch your application and place them there.<}0{>Если Вы хотите поместить в Главное меню дополнительные приложения или утилиты, относящиеся к Вашему приложению, создайте папку на том же уровне, что и пиктограмма для запуска приложения и поместите их в эту папку.<0}

7.   {0>Support multiple monitors<}0{>Поддержка нескольких мониторов<0}

{0>In a multiple monitor system, the top left pixel on the primary monitor always has coordinates 0,0. Valid screen coordinates can exist anywhere in relation to this location.<}0{>В системе с несколькими мониторами левая верхняя точка первичного монитора всегда имеет координаты 0,0. Корректные координаты на экране могут находиться где угодно относительно этого положения.<0}  {0>In particular:<}0{>В частности:<0}

·         {0>Pixels in multiple monitor systems can have negative values for one or both coordinates, since users can place secondary monitors to the left and above the primary monitor.<}0{>Точки в системе с несколькими мониторами могут иметь отрицательные значения для одной или обеих координат, так как пользователи могут помещать вторичные мониторы левее и выше первичного монитора.<0}

·         {0>Users may also place several monitors in a horizontal or vertical row.<}0{>Пользователи также могут поставить несколько мониторов подряд горизонтально или вертикально.<0} {0>At high screen resolutions, coordinates for the monitor furthest from the primary may be much larger than would be possible on any single monitor system.<}0{>При высоком разрешении координаты монитора, находящегося дальше всех от первичного, могут быть значительно больше, чем возможные координаты на любом отдельном мониторе.<0}

{0>Your application must support users who have two or more monitors installed.<}0{>Ваше приложение должно осуществлять поддержку систем, где установлены два и более мониторов.<0}  {0>This support is automatically provided by the operating system, unless your application specifies screen coordinates in any of the windows it creates.<}0{>Такая поддержка осуществляется операционной системой автоматически, если только Ваше приложение не задает специфические координаты для любого из создаваемых окон.<0}  {0>If your application does specify screen coordinates for any window, then:<}0{>Если приложение задает координаты экрана для окон, то:<0}

·         {0>It must handle negative coordinates, as well as large coordinates that are outside the traditional display space.<}0{>Оно должно обрабатывать отрицательные значения координат, а также большие значения, выходящие за обычные границы пространства экрана.<0}

·         {0>Dialogs must not open in a location that splits them across two monitors.<}0{>Диалоговые окна должны открываться в таком месте, чтобы они не разбивались на два монитора.<0} {0>Applications that specify dialog locations as the center of the desktop should use the center of a physical monitor instead.<}0{>Приложения, указывающие положение диалоговых окон как центр рабочего стола, должны использовать центр физического монитора.<0} {0>If you cache the locations of your application’s windows so they appear at their previous screen locations when the user starts your application, you must accommodate any changes in the user’s monitor arrangement and change the display locations of your windows accordingly.<}0{>Если Вы запоминаете координаты окон приложения для того, чтобы они появлялись на тех же местах при запуске приложения, необходимо учитывать изменения в положении мониторов и изменять положение окон соответствующим образом.<0} {0>When your application opens windows, it must verify that the locations where it intends to restore its windows correspond to locations on the current multiple monitor configuration.<}0{>Открывая окна, приложение должно удостовериться, что положения, на которые оно планирует установить окна, соответствуют текущей конфигурации мониторов.<0}

·         {0>Each monitor can have a different resolution and color depth.<}0{>Все мониторы могут иметь разные настройки разрешения и глубины цвета.<0} {0>If your application cannot successfully combine the images from several monitors of different resolutions/color depths, it must degrade gracefully and give the user meaningful options, such as resizing the monitors or accepting a lower definition image.<}0{>Если приложению не удается вывести изображения на несколько мониторов с различным разрешением/глубиной цвета, оно должно предоставить выбор пользователю, например, предложить изменить разрешение монитора или принять изображение с меньшим разрешением.<0}

·         {0>Some applications must be especially aware of multiple monitor issues, including the following:<}0{>Некоторые приложения должны особенно обращать внимание на проблемы использования двух мониторов, включая следующие:<0}

·         {0>Applications that capture all or part of the desktop as a graphic.<}0{>Приложения, захватывающие весь рабочий стол или его часть как графическое изображение.<0}

·         {0>Applications that float toolbars.<}0{>Приложения с плавающими панелями инструментов.<0}

·         {0>Applications that switch among multiple simulated desktops.<}0{>Приложения, переключающиеся между несколькими виртуальными рабочими столами.<0}

·         {0>Screen savers.<}0{>Приложения-заставки.<0}


{0>How to Pretest Applications for UI Fundamentals<}0{>Предварительное тестирование приложений на соблюдение основ пользовательского интерфейса.<0}

{0>Microsoft is developing testing tools that will help to automate the verification process for compliance to the Application Specification for Windows 2000. These tools are expected to be available in the second half of 1999. Please check http://msdn.microsoft.com/winlogo regularly for updated information.<}0{>Компания Microsoft разрабатывает средства тестирования, которые помогут автоматизировать процесс проверки соответствия Спецификации приложений для Windows 2000. Эти средства должны появиться во второй половине 1999 года. Следите за новой информацией на странице http://msdn.microsoft.com/winlogo.<0}

 

{0>To pretest system metrics support:<}0{>Предварительное тестирование поддержки системной метрики:<0}

8.     {0>Open Control Panel, and then open the Display applet.<}0{>Откройте Панель управления, затем откройте Экран.<0}

9.     {0>Choose the Appearance tab.<}0{>Выберите закладку Оформление.<0}

10.  {0>Select a scheme with the «(extra large)» designation, such as Windows Standard (extra large) scheme.<}0{>Выберите схему с пометкой (гигантский шрифт), например схему «Стандартная (гигантский шрифт)».<0} {0>Click on Apply.<}0{>Щелкните Применить.<0}

11.  {0>Test the application’s main screens, dialog boxes, and controls to ensure that these changes have been instated and the application is still usable.<}0{>Проверьте основные окна приложения, диалоговые окна и элементы управления, чтобы убедиться, что после этих изменений приложение работает корректно.<0}

{0>Screen elements should be displayed correctly and compatible with the appearance scheme, i.e., menu items, title bars, icons and icon titles, window borders and scroll bars are displayed with appropriate sizes and fonts.<}0{>Элементы экрана должны отображаться корректно и соответствовать схеме оформления, т.е. пункты меню, заголовки окон, пиктограммы и их подписи, границы окон и полосы прокрутки должны иметь соответствующий размер и отображаться соответствующим шрифтом.<0} {0>Text and controls should never overlap and text should not be truncated inappropriately.<}0{>Текст и элементы управления не должны накладываться друг на друга, и текст не должен обрезаться.<0} {0>Examples of appropriate truncation are<}0{>Примеры такого усечения текста:<0}

·         {0>Text strings too large to be displayed in a column in a list view control.<}0{>Строки слишком большие и не входят в столбец списка.<0} {0>The beginning of the text is displayed, followed by «…» to indicate the truncation.<}0{>Отображается начало текста, за которым следует многоточие, указывающее на обрезанный текст.<0}

·         {0>Text that runs beyond the frame of a window, but can be viewed using the horizontal or vertical scroll bar.<}0{>Текст выходит за границу окна, но его можно просмотреть с помощью горизонтальных и вертикальных полос прокрутки.<0}

 

{0>To pretest high-contrast support:<}0{>Предварительное тестирование поддержки режима Высокой контрастности:<0}

1.     {0>Open Control Panel, and then open the Accessibility Options.<}0{>Откройте Панель управления, затем откройте Специальные возможности.<0}

2.     {0>Choose the Display tab.<}0{>Выберите закладку Экран.<0}

3.     {0>Select the Use High Contrast option.<}0{>Установите флажок Высокая контрастность.<0}

4.     {0>Choose Settings.<}0{>Выберите Настройка.<0}

5.     {0>Choose Custom and verify that High Contrast Black is selected.<}0{>Выберите Настраиваемая и проверьте, что выбрана Контрастная черная схема.<0} {0>Apply these settings.<}0{>Примените эти настройки.<0}

6.     {0>Go back into your product and test the major screens, dialog boxes, and controls to ensure that these changes have been properly reflected.<}0{>Вернитесь к приложению и проверьте все основные и диалоговые окна, элементы управления и убедитесь, что изменения отражены корректно.<0}

7.     {0>Repeat, selecting the High Contrast White option in step 5.<}0{>Повторите, выбрав схему Контрастная белая на шаге 5.<0}

{0>The application should still be usable.<}0{>Приложение должно работать корректно.<0} {0>Screen elements should be displayed correctly and be compatible with the appearance scheme.<}0{>Элементы управления должны отображаться корректно и соответствовать выбранной схеме оформления.<0} {0>For example, make sure that text contrasts with its background, that graphics on toolbar buttons are distinguishable, that lines are still visible, and that no images or complex backgrounds appear behind text.<}0{>Убедитесь, что текст выглядит контрастно на своем фоне, что изображения на кнопках панели инструментов различимы и все линии видимы и что рисунки и элементы фона не находятся позади текста.<0}

{0>If anything within the window is not displayed using the selected color scheme, verify that the user can adjust the display colors without having to alter the document.<}0{>Если какие-либо объекты внутри окна не отображены в текущей схеме цветов, убедитесь, что пользователь может изменить цвета экрана, не изменяя документ.<0}


 

{0>To pretest documented keyboard access:<}0{>Предварительное тестирование документированного доступа с клавиатуры:<0}

1.     {0>Open Control Panel, and then open the Accessibility Options.<}0{>Откройте Панель управления, затем откройте Специальные возможности.<0}

2.     {0>Choose the Keyboard tab.<}0{>Выберите закладку Клавиатура.<0}

3.     {0>Select the Show Extra Keyboard Help.<}0{>Установите флажок Дополнительные сведения о работе с клавиатурой.<0} {0>Apply these settings.<}0{>Примените эти настройки.<0}

4.     {0>Exercise the major functions within your application without using a mouse.<}0{>Проверьте основные функции приложения, не используя мышь.<0}

5.     {0>Verify that a mouse is not required for any activity.<}0{>Убедитесь, что ни для одного действия мышь не требуется.<0}

{0>For example, if a command on a toolbar can only be used with a mouse, make sure that the equivalent command is also available through a menu or through a documented keyboard shortcut.<}0{>Например, если команда панели инструментов доступна только с помощью мыши, убедитесь, что эквивалентная команда доступна из меню или с помощью документированного сочетания клавиш.<0}

{0>The product documentation and user interface must make clear how to carry out a task using the keyboard or it must be readily inferred using knowledge of standard Windows keyboard conventions.<}0{>В документации на программу и в интерфейсе пользователя должно описываться выполнение того или иного действия с помощью клавиатуры, или это должно следовать из знаний стандартных соглашений Windows по использованию клавиатуры.<0} {0>If the documentation is not clear, the product fails the requirement to use adequately documented keyboard UI.<}0{>Если документация непонятна, программный продукт не соответствует требованию по использованию адекватно документированного клавиатурного интерфейса пользователя.<0}

6.     {0>Verify that all menu items and controls have underlined access keys.<}0{>Убедитесь, что все пункты меню и элементы управления доступны при помощи сочетаний клавиш.<0}

 

{0>To pretest exposure of keyboard focus:<}0{>Предварительное тестирование фокуса клавиатурного ввода:<0}

1.     {0>Use the Magnifier accessory.<}0{>Воспользуйтесь программой Экранная лупа.<0} {0>From the Start menu, choose Programs -> Accessories -> Accessibility -> Magnifier.<}0{>Из Главного меню выберите Программы -> Стандартные -> Специальные возможности -> Экранная лупа.<0}

{0>Magnifier is included with Windows 98 and Windows 2000. For Windows 95, install the Microsoft Active Accessibility SDK to get Magnifier.<}0{>Экранная лупа включена в состав Windows 98 и Windows 2000. Чтобы воспользоваться Экранной лупой в Windows 95, необходимо установить Microsoft Active Accessibility SDK.<0} {0>Magnifier is not available for Windows NT 4.<}0{>Экранная лупа не работает в Windows NT 4.<0}

2.     {0>Navigate through your application using the keyboard, making sure that Magnifier accurately tracks and displays the area with the keyboard focus.<}0{>Перемещайтесь по элементам приложения, используя клавиатуру, и убедитесь, что Экранная лупа аккуратно отслеживает перемещение и отображает область, содержащую фокус ввода клавиатуры.<0} {0>In particular, verify that Magnifier:<}0{>В частности, проверьте, что Экранная лупа:<0}

·         {0>Shows the correct focus location when you navigate or type within a document, text field, or table.<}0{>Правильно отображает местоположение фокуса ввода при перемещении или при вводе текста в документ, текстовое поле или таблицу.<0}

·         {0>Shows the correct focus location when you navigate in menus, dialog boxes, toolbars, list boxes, or other controls.<}0{>Правильно отображает местоположение фокуса ввода при перемещении по меню, диалоговым окнам, панелям инструментов, спискам и другим элементам управления.<0}

·         {0>Shows the correct focus location when you extend a selection in text or in a multiple-selection list box, list view, or tree view.<}0{>Правильно отображает местоположение фокуса ввода при изменении размера выделения в тексте и списках или при просмотре древовидных структур.<0}

·         {0>Shows the correct focus location when you return to your application from a dialog box, menu, or another application.<}0{>Правильно отображает местоположение фокуса ввода при возврате в приложение из диалогового окна, меню или другого приложения.<0}

 

{0>To pretest use of sounds:<}0{>Предварительное тестирование использования звуковых эффектов:<0}

1.     {0>Open Control Panel, and then open the Accessibility Options.<}0{>Откройте Панель управления, затем откройте Специальные возможности.<0}

1.     {0>Choose the Sounds tab.<}0{>Выберите закладку Звук.<0}

1.     {0>Select the ShowSounds option.<}0{>Установите флажок Визуальное оповещение.<0} {0>Apply these settings.<}0{>Примените эти настройки.<0}

1.     {0>Go back into your product and test the major functions.<}0{>Вернитесь к приложению и проверьте основные функции.<0} {0>Notice any sounds that are played that do not have equivalent visual feedback.<}0{>Обратите внимание на звуки, для которых нет визуального эквивалента.<0} {0>In particular, look for animations and audio or visual clips.<}0{>В частности, проверяйте анимацию и аудио-визуальные фрагменты.<0}

{0>If any information is conveyed using sound and the same information is not available through textual means, the application does not meet requirements for supporting the ShowSounds option.<}0{>Если какая-либо информация передается посредством звука и недоступна другими средствами, приложение не соответствует требованиям параметра Визуальное оповещение.<0} 


 

{0>To pretest your application for multiple monitor support:<}0{>Предварительное тестирование поддержки нескольких мониторов:<0}

·         {0>Move each of your application’s windows to every monitor, including monitors located to the left and above the primary monitor.<}0{>Переместите каждое из окон приложения на каждый монитор, включая мониторы, расположенные выше и левее первичного монитора.<0} {0>The windows should move to any monitor without error dialogs, hangs or crashes.<}0{>Окна должны перемещаться на любой монитор без возникновения сообщений об ошибках, зависания или сбоев.<0}

·         {0>Resize each resizable window across all monitors.<}0{>Увеличьте размер каждого изменяемого окна на все мониторы.<0}

·         {0>Maximize all windows that can be maximized on each monitor.<}0{>Разверните все окна, которые могут быть развернуты, на каждом мониторе.<0} {0>Windows should maximize to the current monitor, not across monitors to the entire desktop.<}0{>Окна должны разворачиваться на текущем мониторе, а не на нескольких.<0}

·         {0>For windows that can be minimixed:<}0{>Для окон, которые могут быть свернуты:<0}

·         {0>Resize and move each window so it spans all monitors.<}0{>Измените размер каждого окна и переместите его так, чтобы оно находилось на всех мониторах одновременно.<0} {0>Minimize each window, then restore it.<}0{>Сверните каждое окно, затем восстановите его.<0} {0>The window should restore to its original position, spanning several monitors.<}0{>Окно должно восстановиться на исходное место, занимая несколько мониторов.<0}

·         {0>Maximize each restored window.<}0{>Разверните каждое восстановленное окно на полный экран.<0} {0>Each window should maximize to one physical monitor, not to multiple monitors or the virtual desktop.<}0{>Каждое окно должно разворачиваться на один физический монитор, а не на несколько сразу и не на весь виртуальный рабочий стол.<0}

·         {0>Test selecting and dragging elements on windows that span several physical monitors.<}0{>Протестируйте выбор и буксировку элементов управления окон, распространяющихся на несколько физических мониторов.<0}

·         {0>Test floating toolbars that can move off your application’s parent window by maximizing the parent on one monitor and moving the toolbars to a separate monitor.<}0{>Проверьте плавающие панели инструментов, которые могут выходить за границы родительского окна, развернув родительское окно на одном мониторе и переместив панели инструментов на другой монитор.<0}

·         {0>If your application supports dragging graphics objects, set multiple monitors for different screen resolutions and color depths.<}0{>Если приложение поддерживает буксировку графических объектов, настройте разное разрешение и глубину цвета на разных мониторах.<0} {0>Then drag the graphics from one monitor to another.<}0{>Затем отбуксируйте графические объекты с одного монитора на другой.<0} {0>The graphics’ appearance should adapt to each monitor when dropped.<}0{>Вид графики должен изменяться при перемещении на другой монитор.<0}

·         {0>If your application acts directly on the desktop:<}0{>Если приложение работает непосредственно с рабочим столом:<0}

·         {0>Test all functions with monitors to the left and above the primary monitor.<}0{>Проверьте все функции на мониторах, находящихся левее и выше первичного.<0}

·         {0>Set all monitors for the highest possible resolutions and greatest color depths to test your application’s ability to accommodate very large pixel coordinates<}0{>Установите все мониторы на максимально-возможное разрешение и наибольшую глубину цвета, чтобы проверить, может ли приложение работать с большими значениями координат точек.<0}

{0>Set each monitor at a different color depth and screen resolution, then exercise your application.<}0{>Установите на всех мониторах разную глубину цвета и разрешение, затем проверьте работу приложения.<0} {0>Your application must successfully accommodate the differences or provide a meaningful message to the user with suggestions on how to change the configuration so the program will work as intended<}0{>Приложение должно успешно подстраиваться под различные настройки или отображать сообщение с предложением изменения конфигурации, необходимого для корректной работы программы <0}


 

 


{0>Chapter 6<}0{>Глава 6<0}

{0>Describes the requirements for ensuring that the application can participate in system-wide power management.<}0{>Описывает требования, обеспечивающие работу приложения в системном управлении питанием.<0}

{0>OnNow/ACPI Support<}0{>Поддержка OnNow/ACPI<0}

{0>Summary of OnNow/ACPI Requirements<}0{>Сводка требований OnNow/ACPI<0}

{0>Rationale<}0{>Логическое обоснование<0}

{0>Applications must participate in system-wide power management decision-making to establish error-free handling of power down and power up scenarios.<}0{>Приложения должны участвовать в принятии решений об управлении питанием для обеспечения безошибочной работы системы при отключении и включении питания.<0} {0>Applications must be able to respond to system or user requests to support a low-power state, and then they must also respond to wake notifications, preserving data appropriately.<}0{>Приложения должны отвечать на запросы системы и пользователя о переходе в режим экономии электроэнергии, а затем реагировать на уведомления о возврате в обычный режим, сохраняя данные после возврата.<0}

{0>In this chapter, the term «sleep» means that the system is on standby or is in hibernation.<}0{>В этой главе термин «спать» означает, что система находится в  режиме ожидания или бездействует.<0} {0>To the application, standby and hibernation are the same.<}0{>Для приложения режим ожидания и бездействие ничем не отличаются.<0} {0>The difference occurs in how the operating system determines what gets powered-down.<}0{>Различие заключается в том, как операционная система определяет, от чего отключается питание.<0} {0>The application does not need to provide any additional feedback to make this determination.<}0{>Приложение не должно предоставлять дополнительную информацию для выяснения этого.<0}

{0>The OnNow design initiative is a set of design specifications for system hardware and software applications which enable a PC to deliver the instantly available capabilities consumers expect from TVs, VCRs, stereos and other appliances.<}0{>OnNow – это набор спецификаций для разработчиков аппаратного и программного обеспечения, позволяющий персональным компьютерам предоставлять те же возможности, что и телевизоры, видеомагнитофоны, музыкальные центры и другие устройства.<0}

{0>Customer Benefits<}0{>Преимущества пользователя<0}

·         {0>OnNow/Advance Configuration and Power Interface (ACPI) reduces power consumption, whether power comes from a wall outlet or a battery.<}0{>Использование OnNow/Advance Configuration and Power Interface (ACPI, расширенный интерфейс конфигурации и питания) приводит к уменьшению потребления электроэнергии как при питании от электросети, так и от аккумуляторов.<0} {0>When the computer is turned off, it goes into a lower power state and can then be wakened by a device in the system, such as the network card, modem, or keyboard.<}0{>При отключении компьютер переходит в режим пониженного потребления электроэнергии и может быть возвращен в обычный режим сигналом от устройства системы, например, сетевой платы, модема или клавиатуры.<0}

·         {0>The PC is consistently available to the user because it can rapidly return from a low power state to a fully-functional state.<}0{>Компьютер постоянно доступен пользователю, так как переход из режима пониженного энергопотребления в полностью работоспособное состояние происходит очень быстро.<0} {0>For example, network administrators can manage computers late at night, and home users can receive faxes, without being there to turn on and guide the machine.<}0{>Например, администраторы сети смогут проводить обслуживание компьютеров поздно вечером, а пользователи смогут получать факсы, находясь вне офиса и не включая компьютеры.<0}

·         {0>Customers can control what happens when their PCs power down in a way that is easily understood and predictable.<}0{>Пользователи смогут управлять процессом отключения питания своих компьютеров понятным и предсказуемым способом.<0}

 

{0>Requirements<}0{>Требования<0}

1.                       {0>Indicate busy application status properly<}0{>Корректное указание состояния «приложение занято»<0}

2.                       {0>Respond to sleep requests from the operating system properly<}0{>Корректная реакция на запросы операционной системы о переходе в спящий режим<0}

3.                       {0>Handle sleep notifications properly<}0{>Корректная обработка уведомления о спящем режиме<0}

4.                       {0>Handle wake from normal sleep without losing data<}0{>Сохранение данных при обычном «пробуждении» <0}

5.                       {0>Handle wake from critical sleep properly<}0{>Корректная обработка «пробуждения» от критического сна<0}

 

{0>References<}0{>Справочная информация<0}

{0>OnNow and Power Management:<}0{>OnNow и Управление питанием:<0} {0>see http://www.microsoft.com/hwdev/onnow.htm <}0{>см. http://www.microsoft.com/hwdev/onnow.htm <0}

{0>Microsoft Platform SDK - Power Management Reference:<}0{>Microsoft Platform SDK – Информация об управлении питанием:<0}

      {0>http://msdn.microsoft.com/library/sdkdoc/winbase/power_3v6t.htm <}0{>http://msdn.microsoft.com/library/sdkdoc/winbase/power_3v6t.htm <0}

{0>How to Comply with OnNow/ACPI Requirements<}0{>Соответствие требованиям OnNow/ACPI<0}

1.   {0>Indicate busy application status properly<}0{>Корректное указание состояния «приложение занято»<0}

{0>Applications that have operations that need to continue running even though the PC appears idle must use the SetThreadExecutionState() API function to mark the computer as busy.<}0{>Приложения, производящие операции, выполнение которых продолжается, даже если компьютер не производит никаких видимых действий, должны использовать функцию API SetThreadExecutionState() для указания того, что компьютер занят.<0} {0>When marked as busy, the operating system will not send sleep requests as a result of the computer being idle.<}0{>Когда компьютер занят, операционная система не будет отправлять запросы на переход в спящий режим.<0} {0>For example, Windows 2000 will mark a thread as busy if the thread has an open file on a network device, thus preventing sleeping with open network files without the user specifically requesting the sleep.<}0{>Например, Windows 2000 пометит поток как занятый, если он имеет открытый файл на сетевом диске, что предотвратит «засыпание» при открытых сетевых файлах, если только пользователь явно не запросит переход в спящий режим.<0}

{0>Applications should use the ES_CONTINUOUS flag when setting a thread state only for cases when the application is performing an operation that, if interrupted, might result in a loss of data.<}0{>Приложение должно использовать флаг ES_CONTINUOUS при установке состояния потока, только если прерывание текущей операции может привести к потере данных.<0} {0>Performing a query and an update of a database is one such case.<}0{>Примером такой операции является запрос на обновление базы данных.<0} {0>In all other cases, the applications should only use the ES_SYSTEM_REQUIRED flag.<}0{>Во всех других случаях приложения должны использовать флаг ES_SYSTEM_REQUIRED.<0} {0>See the Microsoft Platform SDK for details.<}0{>Дополнительную информацию можно найти в Microsoft Platform SDK.<0}

{0>Note, applications that use SetThreadExecutionState() will still receive sleep requests if the user specifically requests the system to sleep or closes the lid of a laptop.<}0{>Обратите внимание, что приложения, использующие функцию SetThreadExecutionState(), будут получать запросы о переходе в спящий режим, если пользователь явно запросит о таком переходе или закроет крышку портативного компьютера.<0} {0>These requests must be handled as specified in all the other requirements in this chapter.<}0{>Обработка этих запросов описана в остальных требованиях этой главы.<0}

{0>Examples of applications that need to use this function are video playback or presentation applications to keep the display on.<}0{>Примерами приложений, которым необходимо использовать эту функцию, являются программы воспроизведения видео или презентаций.<0} {0>Such applications should use the SetThreadExecutionState() API with the ES_DISPLAY_REQUIRED flag set to prevent the operating system from turning off the display.<}0{>Такие приложения должны использовать функцию API SetThreadExecutionState() с установленным флагом ES_DISPLAY_REQUIRED для предотвращения отключения монитора.<0}

2.   {0>Respond to sleep requests from the operating system properly<}0{>Корректная реакция на запросы операционной системы о переходе в спящий режим<0}

{0>The system initiates a sleep request by sending the running applications a WM_POWERBROADCAST message with a wParam value of PBT_APMQUERYSUSPEND.<}0{>Система инициирует запрос о переходе в спящий режим, отправляя запущенным приложениям сообщение WM_POWERBROADCAST со значением wParam PRB_APMQUERYSUSPEND.<0} {0>The zero bit of the lParam value, known as the UI bit, indicates whether user interaction is possible.<}0{>Нулевой бит значения lParam, так называемый бит UI, указывает, возможно ли взаимодействие с пользователем.<0} {0>If the user closes a laptop lid, the system will set the UI bit to 0. Otherwise the UI bit will be 1. Your application must respond to these requests as follows:<}0{>Если пользователь закрывает крышку портативного компьютера, система установит для этого бита значение 0. В противном случае значением бита UI будет 1. Ваше приложение должно реагировать на такие запросы следующим образом:<0}

1.     {0>When an application is not busy and it does not have unsaved data on a network device, the application must get ready to go into a sleep state by ensuring that all outgoing operations are completed and no data loss will occur on resumption.<}0{>Когда приложение не занято и на сетевых устройствах нет несохраненных данных, приложение должно подготовиться к переходу в спящий режим, завершив все текущие операции и обеспечив сохранность данных при переходе в обычный режим.<0} {0>The application must then return a value of TRUE for this message.<}0{>Затем приложение должно вернуть значение TRUE для этого сообщения.<0}

2.     {0>When an application has unsaved data on a network location, the application must check the UI bit to see if interaction with the user is possible.<}0{>Если приложение должно сохранить данные на сетевом устройстве, оно должно проверить бит UI и убедиться, что взаимодействие с пользователем возможно.<0}

·         {0>If the UI bit is 0, the application must deny the sleep request by returning BROADCAST_QUERY_DENY.<}0{>Если бит UI имеет значение 0, приложение должно отвергнуть запрос о переходе в спящий режим, возвратив BROADCAST_QUERY_DENY.<0}

{0>If the UI bit is 1, the application must query the user to determine the user’s desired course of action.<}0{>Если бит UI имеет значение 1, приложение должно запросить пользователя о необходимых действиях.<0} {0>Some suggested courses of action are: Offer to save the user’s work and proceed to sleep.<}0{>Действия могут быть следующими: предложить пользователю сохранить данные и перейти в спящий режим.<0}

{0>Offer to discard the user’s work and proceed to sleep.<}0{>предложить не сохранять данные и перейти в спящий режим.<0}

{0>Offer to cancel the sleep event.<}0{>предложить не переходить в спящий режим.<0}

{0>Instruct the user on the actions required by the user to allow a sleep request.<}0{>предложить список действий, необходимых для перехода в спящий режим.<0}


3.     {0>When an application is busy it must do the following:<}0{>Если приложение занято, оно должно сделать следующее:<0}

·         {0>If the UI bit is 1, the application must inform the user that it is busy and cannot sleep at this time.<}0{>Если значение бита UI равно 1, сообщить пользователю о том, что оно занято и не может перейти в спящий режим.<0} {0>This interaction with the user must automatically time out when the operation causing the application to be busy is completed.<}0{>Взаимодействие с пользователем автоматически заканчивается по окончании операции, приводящей к статусу «приложение занято».<0} {0>The interaction may optionally allow the user to cancel the sleep request or cancel the operation.<}0{>Пользователь может отменить переход в спящий режим или отменить операцию.<0} {0>Once the operation is completed, or canceled by the user, the application must prepare to go to a sleep state and return TRUE.<}0{>По завершении операции или в случае отмены ее пользователем приложение должно подготовиться к переходу в спящий режим и вернуть значение TRUE.<0}  {0>If directed by the user to cancel the sleep request, the application must return BROADCAST_QUERY_DENY.<}0{>Если пользователь прервал переход в спящий режим, приложение должно вернуть значение BROADCAST_QUERY_DENY.<0}

·         {0>If the UI bit indicates that user interaction is not possible, the application must either return BROADCAST_QUERY_DENY, or wait until the operation causing the busy status is finished, and then prepare to go to a sleep state and return TRUE.<}0{>Если бит UI указывает на то, что взаимодействие с пользователем невозможно, приложение должно вернуть сообщение BROADCAST_QUERY_DENY или дождаться окончания операции, занимающей приложение, а затем подготовиться к переходу в спящий режим и вернуть значение TRUE.<0}

                       

3.   {0>Handle sleep notifications properly<}0{>Корректная обработка уведомления о спящем режиме<0}

{0>Once all applications have accepted the sleep request, the operating system will send a WM_POWERBROADCAST/PBT_APMSUSPEND message.<}0{>Как только все приложения примут запрос о переходе в спящий режим, операционная система отправит сообщение WM_POWERBROADCAST/PBT_APMSUSPEND.<0} {0>In response, your application must allow the hardware to completely power down by taking the appropriate actions.<}0{>В ответ на это приложение должно предпринять соответствующие действия, чтобы позволить полностью отключить питание.<0} {0>These actions include:<}0{>В число таких действий входит:<0}

·         {0>Saving all data and closing all open files, including network files<}0{>Сохранение всех данных и закрытие всех открытых файлов, включая сетевые.<0}

·         {0>Pausing sound<}0{>Приостановка воспроизведения звука<0}

·         {0>Pausing all play in games<}0{>Включение паузы в играх<0}

·         {0>Restoring any drivers that the application modified to their initial state<}0{>Восстановление исходного состояния всех драйверов, измененных приложением.<0}

 

{0>Although your application is required to prevent data loss, it is up to each individual application to determine the appropriate implementation.<}0{>Приложение должно предотвратить потерю данных, но реализация этого требования зависит от каждого отдельного приложения.<0} {0>We do, however, advise that your application do so in the following manner:<}0{>Рекомендуется, однако, делать это следующим образом:<0}

·         {0>Flush any user data to local non-volatile storage that will persist after the power supply is shut down.<}0{>Сохраните данные пользователя на долговременных носителях, где они сохранится после отключения питания.<0}

·         {0>Write user data to temporary storage when the user has not requested that the original file be overwritten.<}0{>Сохраните данные пользователя на временный носитель, если пользователь не хочет перезаписывать исходный файл.<0}

 

{0>Note:<}0{>Замечание:<0} {0>In some circumstances, the sleep request may be canceled.<}0{>В некоторых случаях запрос о переходе в спящий режим может быть отменен.<0} {0>If this occurs, the operating system follows the WM_POWERBROADCAST/PBT_APMQUERYSUSPEND message with WM_POWERBROADCAST / APM_QUERYSUSPENDFAILED message.<}0{>В этом случае операционная система отправляет сообщения WM_POWERBROADCAST/PBT_APMQUERYSUSPEND и WM_POWERBROADCAST / APM_QUERYSUSPENDFAILED.<0}
{0>In this case, the application should restore all its data to a working state and continue all operations normally.<}0{>Тогда приложение должно восстановить рабочее состояние всех данных и продолжить обычную работу.<0}

4.   {0>Handle wake from normal sleep without losing data<}0{>Сохранение данных при обычном «пробуждении»<0}

{0>The application must handle the PBT_APMRESUMESUSPEND notification without losing data and return the application to an unambiguous state.<}0{>Приложение должно обрабатывать уведомление PBT_APMRESUMESUSPEND без потери данных и возвращаться в исходное состояние.<0}

{0>Applications that were open when the computer went into the sleep state must be open when the system wakes up.<}0{>Приложения, которые были открыты до перехода в спящий режим, должны оставаться открытыми при пробуждении.<0} {0>The operating system will notify the applications with a WM_POWERBROADCAST/PBT_APMRESUMESUSPEND message when the computer wakes from sleep.<}0{>Операционная система уведомит приложения о переходе компьютера из спящего режима в рабочий с помощью сообщения WM_POWERBROADCAST/PBT_APMRESUMESUSPEND.<0} {0>The applications should attempt to restore all context to the state that existed just before the computer went to sleep.<}0{>Приложения должны пытаться возвращаться в состояние, предшествовавшее переходу в спящий режим.<0} {0>If the data cannot be fully restored, the application should notify the user, and it may seek the user’s aid in restoring data to a state acceptable to the user.<}0{>Если данные нельзя восстановить полностью, приложение должно уведомить об этом пользователя и предложить восстановление данных до приемлемого уровня.<0}

{0>The application must attempt to recover back to a stable state.<}0{>Приложение должно пытаться возвратиться в стабильное состояние.<0} {0>The application must not stall, cause the system to crash, destabilize the system, corrupt existing data files, or knowingly lose data without notifying the user.<}0{>Приложение не должно «зависать», приводить к сбою, дестабилизировать систему, повреждать файлы данных или намеренно терять данные, не предупреждая пользователя.<0}

5.   {0>Handle wake from critical sleep properly <}0{>Корректная обработка «пробуждения» от критического сна<0}

{0>The application must handle the PBT_APMRESUMECRITICAL notification at least as well as they recover from power loss.<}0{>Приложение должно обрабатывать уведомление PBT_APMRESUMECRITICAL по крайней мере так же, как восстановление после внезапного отключения питания.<0}

{0>In certain situations, the operating system may need to perform a critical sleep operation—for example, if battery capacity is critically low, or if the computer temperature is critically high and must be shut down to prevent hardware damage.<}0{>В некоторых ситуациях операционной системе приходится выполнять переход в спящий режим в критической ситуации, например, если емкость аккумулятора достигла критически низкого уровня или температура компьютера слишком высока, и компьютер необходимо выключить для предотвращения повреждения аппаратуры.<0} {0>A user may also initiate a critical sleep request in an urgent situation—for example, the user has to board a plane and must power down the computer instantly.<}0{>Возможно, пользователю самому придется инициировать критический переход в спящий режим, например, если он должен срочно садиться в самолет и отключить компьютер немедленно.<0}

{0>In cases of critical sleep, the applications will not be notified by the operating system of the impending sleep event.<}0{>В этих случаях приложения не будут уведомляться о предстоящем переходе в спящий режим.<0} {0>Your application will not get the opportunity to perform any actions defined in the previous requirements.<}0{>Поэтому приложение не сможет предпринять необходимые действия, описанные в предыдущем разделе.<0}

{0>When the computer is wakened, the operating system will indicate in its wake notification whether the shut down was critical.<}0{>При «пробуждении» компьютера в уведомлении о пробуждении операционная система укажет, было ли отключение питания критическим.<0} {0>The application should not crash and should wake to a stable state—no stalls, crashes, or corruption of files that were not opened by the application.<}0{>Приложение не должно приводить к сбою и должно восстановить стабильную работу – не «зависать», не повреждать файлы, которые не были открыты приложением.<0} {0>Data may be lost, but the application should notify the user of the data loss that occurred.<}0{>Данные могут теряться, но приложение должно уведомлять пользователя о произошедшей потере данных.<0}

 

{0>Considerations for Applications that install as services<}0{>Советы для приложений, устанавливаемых как службы<0}

{0>By default, the system does not notify services of power management events.<}0{>По умолчанию система не уведомляет службы о событиях управления питанием.<0} {0>The system will initiate power state transitions without any action required on the part of the service.<}0{>Система осуществляет переходы между различными режимами энергопотребления, не требуя никаких действий со стороны служб.<0} 

{0>If your service must participate in power management decisions:<}0{>Если Ваша служба должна участвовать в принятии решений об управлении питанием:<0}

1.     Выполните следующие действия, чтобы получать уведомления о событиях управления питанием:<0}

·         {0>The service must notify the system that the service will accept and process power events as follows:<}0{>Служба должна сообщить системе, что она будет принимать и обрабатывать сообщения об управлении питанием следующим образом:<0}  {0>When the service calls SetServiceStatus, it must set the SERVICE_ACCEPT_POWEREVENT bit in the dwControlsAccepted field in the SERVICE_STATUS structure.<}0{>При вызове службой функции SetServiceStatus должен устанавливаться бит SERVICE_ACCEPT_POWEREVENT в поле dwControlsAccepted структуры SERVICE_STATUS.<0}

·         {0>The service’s control handler must be a «HandlerEx» function as described at http://msdn.microsoft.com/library/sdkdoc/winbase/services_3smw.htm.<}0{>Управляющая функция-обработчик службы должна быть функцией «HandlerEx», как описано в документе по адресу http://msdn.microsoft.com/library/sdkdoc/winbase/services_3smw.htm.<0}  {0>Services must use the RegisterServiceCtrlHandlerEx function to register a «HandlerEx» control handler function.<}0{>Службы должны использовать функцию RegisterServiceCtrlHandlerEx для регистрации управляющей функции-обработчика «HandlerEx».<0} {0>«HandlerEx» control handler functions support the new power event control codes (whereas «Handler» control handler functions do not).<}0{>Управляющие функции-обработчики «HandlerEx» поддерживают новые управляющие коды события управления питанием (в то время как управляющие функции-обработчики типа «Handler» не поддерживают).<0}

1.     {0>Once you have enabled notification of power management events for your service, the service must respond and process the SERVICE_CONTROL_POWEREVENT control requests in the same manner as for WM_POWERBROADCAST messages enumerated earlier in this chapter to comply with the OnNow/ACPI requirements.<}0{>После того включения уведомлений о событиях управления питанием Вашей службы она должна будет отвечать на управляющие запросы SERVICE_CONTROL_POWEREVENT и обрабатывать их точно так же, как и сообщения WM_POWERBROADCAST, перечисленные ранее в этой главе и необходимые для соответствия требованиям OnNow/ACPI.<0} {0>A SERVICE_CONTROL_POWEREVENT is equivalent to an application receiving a WM_POWERBROADCAST message.<}0{>Получение сообщения SERVICE_CONTROL_POWEREVENT эквивалентно получению сообщения WM_POWERBROADCAST.<0}

{0>Comparison of Power Management notifications <}0{>Сравнение уведомлений об управлении питанием <0}

 

{0>Non-Service<}0{>Не службы<0}

{0>Service<}0{>Службы<0}

{0>Power Event<}0{>Событие управления питанием<0}

{0>WM_POWERBROADCAST<}0{>WM_POWERBROADCAST<0}

{0>SERVICE_CONTROL_POWEREVENT<}0{>SERVICE_CONTROL_POWEREVENT<0}

{0>Event parameter<}0{>Параметр события<0}

{0>wParam<}0{>wParam<0}

{0>dwEventType<}0{>dwEventType<0}

{0>Event parameter<}0{>Параметр события<0}

{0>lParam<}0{>lParam<0}

{0>lpEventData<}0{>lpEventData<0}

{0>Accept Request<}0{>Если запрос принят<0}

{0>Return TRUE<}0{>Вернуть TRUE<0}

{0>Return NO_ERROR<}0{>Вернуть NO_ERROR<0}

{0>Deny Request<}0{>Если запрос отклонен<0}

{0>Return BROADCAST_QUERY_DENY<}0{>Вернуть BROADCAST_QUERY_DENY<0}

{0>Return any Error code<}0{>Вернуть любой код ошибки<0}

 


 

{0>OnNow Example:<}0{>Пример OnNow:<0}

{0>The code example below illustrates how to handle power management messages in your wndproc function.<}0{>В приведенном ниже примере показана обработка сообщений об управлении питанием в процедуре wndproc.<0}

 

//  {0>FUNCTION:<}0{>FUNCTION:<0} {0>WndProc(HWND, unsigned, WORD, LONG)<}0{>WndProc(HWND, unsigned, WORD, LONG)<0}

//

//  {0>PURPOSE:<}0{>НАЗНАЧЕНИЕ:<0}  {0>Processes messages for the main window.<}0{>Обработка сообщений, приходящих главному окну.<0}

//

//  {0>WM_COMMAND<}0{>WM_COMMAND<0}       {0>- process the application menu<}0{>- обработка меню приложения<0}

//  {0>WM_PAINT<}0{>WM_PAINT<0}  {0>- Paint the main window<}0{>- рисование главного окна<0}

//  {0>WM_DESTROY<}0{>WM_DESTROY<0}       {0>- post a quit message and return<}0{>- отправка сообщения о выходе и возврат<0}

//

//

BOOL g_bAvoidIO = FALSE;

TCHAR g_szTitle[] = _T("{0>Suspend<}0{>Ждущий режим<0}");

TCHAR g_szText[] = _T("{0>Suspend request received.<}0{>Получен запрос о переходе в ждущий режим.<0}  ")

                   _T("{0>Okay to close all files and connections?<}0{>Закрыть все файлы и соединения?<0}");

 

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

       int wmId, wmEvent;

   SYSTEM_POWER_STATUS Status;

 

       switch (message)

       {

              case WM_COMMAND:

                     wmId    = LOWORD(wParam);

                     wmEvent = HIWORD(wParam);

                     // {0>Parse the menu selections:<}0{>Разбор выбора из меню<0}

                     switch (wmId)

                     {

                           case IDM_ABOUT:

                              DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd,

 (DLGPROC)About);

                              break;

                           case IDM_EXIT:

                              DestroyWindow(hWnd);

                              break;

                           default:

                              return DefWindowProc(hWnd, message, wParam, lParam);

                     }

                     break;

 

         case WM_POWERBROADCAST:

            switch(wParam)

            {

            case PBT_APMBATTERYLOW:

               // {0>Battery is low.<}0{>Аккумулятор разряжен.<0}  {0>This global will be used to determine<}0{>Используется для определения,<0}

 // {0>whether I/O should be avoided or whether it's okay to<}0{>нужно ли отменить любой ввод/вывод или можно<0}

 // {0>suck up as much power as our app desires.<}0{>использовать столько энергии, сколько необходимо.<0}

               g_bAvoidIO = TRUE;

               break;

 

            case PBT_APMOEMEVENT:

               // {0>OEM specific events<}0{>Специфические события OEM<0}

               break;

 

            case PBT_APMPOWERSTATUSCHANGE:

               // {0>Computer was docked or undocked, battery life is less <}0{>Компьютер был помещен или изъят из стационарного устройства, срок работы <0}

               // {0>than 5 minutes, battery is at less than 10%, battery <}0{>аккумулятора менее 5 минут, осталось 10% мощности аккумулятора, энергия<0}

               // {0>changed by 3%, etc.  We're only interested in whether or <}0{>аккумулятора изменилась на 3% и т.д. Нас интересует только, подключен ли<0}

               // {0>not we're on AC.<}0{>компьютер к сети.<0}  {0>If we're on battery we'll try and be <}0{>При питании от аккумулятора необходимо экономно<0}

               // {0>conscientious about how we use power.<}0{>расходовать энергию.<0}

 

               // {0>You can do other interesting things here, for example, if <}0{>Здесь можно производить и другие действия, например, если <0}

               // {0>you're performing an operation that you know takes longer<}0{>выполняется операция, которая продлится дольше, чем <0}

               // {0>than the amount of time (power) remaining for the <}0{>остается времени (мощности) работы аккумулятора,<0}

               // {0>battery, you can stop the process and inform the user <}0{>Вы можете остановить процесс и проинформировать пользователя о том, <0}

               // {0>that there is not enough time left to complete the<}0{>что времени для завершения текущей операции<0}

               // {0>operation.<}0{>недостаточно.<0}

               GetSystemPowerStatus(&Status);

               g_bAvoidIO = Status.ACLineStatus == 1 ? FALSE : TRUE;

               break;

 

            case PBT_APMQUERYSUSPEND:

               // {0>If no data loss or corruption will occur, always return<}0{>Если потери или повреждения данных не произошло, всегда возвращать<0}

               // {0>TRUE.<}0{>TRUE.<0} {0>If data loss or corruption could occur<}0{>Если данные могли быть потеряны или повреждены, <0}

               // {0>check the high bit of lParam before displaying any <}0{>проверяйте старший бит значения lParam перед отображением любого <0}

               // {0>user interface elements.<}0{>элемента интерфейса пользователя.<0} 

               // {0>If the user doesn't reply in a reasonable <}0{>Если пользователь не ответит за разумное <0}

               // {0>amount of time the system will suspend so DON'T DO THIS <}0{>время, система перейдет в ждущий режим, так что НЕ ДЕЛАЙТЕ ТАК <0}

               // {0>unless you have to.<}0{>без крайней необходимости.<0}

               if (g_bNetDataDirty )

                         {

                     if(lParam & 0x00000001)

                                {

                    if (IDNO == MessageBox(hWnd, g_szText, g_szTitle,

                             MB_YESNO | MB_ICONQUESTION | MB_SYSTEMMODAL))

                     return BROADCAST_QUERY_DENY;

                        else     

                              // {0>User says to go to sleep and lose the network<}0{>Пользователь требует перехода в спящий режим<0}

                              // {0>data.<}0{>с потерей сетевых данных.<0}

                              return TRUE;

                        }

                     else

                       return BROADCAST_QUERY_DENY;

                             }

               else

                 return TRUE;

 

            case PBT_APMQUERYSUSPENDFAILED:

               // {0>We didn't do anything in our PBT_APMQUERYSUSPEND so no <}0{>В обработчике PBT_APMQUERYSUSPEND мы ничего не делаем, так что<0}

               // {0>action is necessary here.<}0{>нет необходимости делать что-либо здесь.<0} {0>If we had done something in <}0{>Если бы в уведомлении<0}

               // {0>our PBT_APMQUERYSUSPEND notification it would be <}0{>PBT_APMQUERYSUSPEND что-то происходило, здесь <0}

               // {0>necessary to undo it here.<}0{>надо было бы отменять эти действия.<0}

               break;

 

            case PBT_APMRESUMEAUTOMATIC:

               // {0>We would process this notification if we handled <}0{>Это уведомление необходимо обрабатывать, если бы мы обрабатывали <0}

               //