Ищете документацию по "правильному" способу установки приложений на Windows 7 - PullRequest
9 голосов
/ 11 апреля 2011

Я работаю с некоторыми устаревшими приложениями (10-15 лет) и пытаюсь найти руководство по «правильному» способу установки и запуска их (и любого пользовательского приложения) в Windows 7 без необходимости предоставления полных прав администратора. .

Другими словами, куда должны идти исполняемые файлы / файлы только для чтения, куда должны идти файлы пользовательских данных / файлы чтения-записи, куда должны идти записи реестра, чтобы избежать проблем с виртуализацией файлов / реестра UAC и Windows 7 во время установка и во время выполнения.

Кажется, я помню, несколько лет назад, официальный документ Microsoft по этому вопросу, но сейчас я не могу найти какую-либо соответствующую информацию. Я нашел информацию на стороне пользователя (как заставить устаревшие приложения работать на Windows 7 с помощью настроек совместимости), но не на стороне разработчика (как создавать / устанавливать приложения для приятной игры на Windows 7 изначально).

Любые указатели на такую ​​информацию будут наиболее цениться. Спасибо.

Марк

Ответы [ 2 ]

11 голосов
/ 11 апреля 2011

Вы думаете о Требованиях к логотипу Windows .

  1. Установка в правильные папки по умолчанию

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

Windows предоставляет конкретные места в файловой системе хранить программы и программное обеспечение компоненты, общие данные приложения, и данные приложения, специфичные для Пользователь:

  • По умолчанию приложения должны быть установлены в папку Program Files [16]. Пользовательские данные или данные приложения никогда не должны храниться в этом месте из-за разрешений безопасности, настроенных для этой папки

[16] % ProgramFiles% для собственных 32-разрядных и 64-разрядных приложений и % ProgramFiles (x86)% для 32-разрядных приложений, работающих на x64 соответственно

  • Все данные приложения, которые должны быть доступны пользователям на компьютере, должны храниться в ProgramData

  • Все данные приложения, предназначенные исключительно для конкретного пользователя и не подлежащие передаче другим пользователям компьютера, должны храниться в папке Users \\ AppData

  • Никогда не пишите напрямую в каталог и / или подкаталоги Windows. Используйте правильные методы для установки файлов, таких как шрифты или драйверы

  • В установках «на машину» пользовательские данные должны записываться при первом запуске, а не во время установки. Это потому, что нет правильного местоположения пользователя для хранения данных во время установки. Попытки приложения изменить поведение ассоциации по умолчанию на уровне компьютера после установки будут безуспешными. Вместо этого значения по умолчанию должны запрашиваться на уровне пользователя, что не позволяет нескольким пользователям перезаписывать значения по умолчанию друг друга.

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

Примечание: Вы можете протестировать все это на Windows 2000 или Windows XP, просто (как требуется для логотипа Windows 2000), работая от имени обычного пользователя.

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

Вы можете отказаться от этого совместимого взлома, указав свое приложение на RunAs Invoker :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    ...
    <!-- Disable file and registry virtualization -->
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
            <requestedPrivileges>
                <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
            </requestedPrivileges>
        </security>
    </trustInfo>
    ...
</assembly>

В руководствах по логотипу рассказывается о UAC и виртуализации записей в определенных местах:

  1. Следуйте указаниям по контролю учетных записей (UAC)

Некоторые приложения Windows запускаются в контекст безопасности администратора аккаунт, и многие требуют чрезмерного права пользователя и привилегии Windows. Контроль доступа к ресурсам позволяет пользователям контролировать их системы против нежелательных 20 изменения. Самое важное правило для контроль доступа к ресурсам заключается в предоставить наименьшее количество доступа «Стандартный пользовательский контекст», необходимый для Пользователь, чтобы выполнить его или ее необходимое задачи. Следуя инструкциям UAC предоставляет приложения с необходимые разрешения при необходимости, не выходя из системы постоянно подвергается угрозе безопасности.

Большинство приложений не требуют права администратора во время выполнения, и должно быть просто отлично работает как Стандарт-пользователь. Приложения для Windows должен иметь манифест 21 (встроенный или внешний 22), который определяет их уровни выполнения и говорит ОС, что privileges приложение требует для запуска.

  • Например,

  • Основной процесс приложения должен запускаться как обычный пользователь (asInvoker).Любые административные функции должны быть перемещены в отдельный процесс, который запускается с правами администратора.

  • Отказ требуется для приложений, которые запускают свой основной процесс 23 с повышенными привилегиями (requireAdministrator или highAvailable)

Отказы будут считается для следующих сценариев:

  • Административные или системные инструменты с уровнем выполнения, установленным в максимально высокий доступный, и / или requireAdministrator

Или

  • Только приложение Accessibility или UI Automation Framework устанавливает для флага uiAccess 24 значение true, чтобы обойти изоляцию привилегий пользовательского интерфейса (UIPI)

Затем был высокий dpi.В течение десятилетия требования к логотипу Windows требовали, чтобы приложения соответствующим образом реагировали на дисплеи с высоким (не 96 dpi).Поскольку большинство приложений ужасно ломаются, если пользователь использует «Большие шрифты», Microsoft отказалась и, подобно виртуализации файловой системы, также виртуализировала настройку dpi.Если приложение не откажется от хака на совместимость: Windows будет вам лгать и сообщать, что у вас 96 dpi.

Только после того, как вы правильно написали свое приложение, вы должны добавить запись в манифест приложения, чтобы отключить высокий-dpi scaling:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    ...
    <!-- We are high-dpi aware on Windows Vista -->
    <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
        <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
            <dpiAware>true</dpiAware>
        </asmv3:windowsSettings>
    </asmv3:application>
    ...
</assembly>

В любом случае, все это есть, Программа-логотип Windows 7 Client Software .


Примечание: Если вы писали приложение для Windows 15 лет назад (1995 г.), я предположил , для которого вы писали:

  • для Windows 3.1 или
  • для Windows 95

вместо:

  • Windows NT 3.1
  • Windows NT 3.5
  • Windows NT 4
  • Windows 2000
  • Windows XP

Важно отметить, что Windows NT была разработана как безопасная операционная система.Вам не разрешено произвольно делать все, что вы хотите.Это принципиальное отличие от:

  • Windows 1
  • Windows 2
  • Windows 3
  • Windows 3.1
  • Windows 95
  • Windows 98
  • Windows Me

, которая не имела безопасности.

Для записи в папку Windows и программные файлы требуется разрешение администратора.Это потому, что обычно только администраторы должны устанавливать приложения.Но обычные пользователи не могут изменять или повреждать установленные программы или саму установку Windows, например:

4 голосов
/ 11 апреля 2011

В Windows 7 Training Kit есть большой раздел о совместимости приложений, включая приятную игру с UAC, установку в нужные папки и т. Д.

http://www.microsoft.com/downloads/en/details.aspx?familyid=1C333F06-FADB-4D93-9C80-402621C600E7&displaylang=en

Если вы также хотите использовать новые функции Windows 7, а не просто сделать ваше приложение совместимым, в комплекте есть много полезного.

...