Вопрос: Как сообщить Windows 7, что приложение не нужно запускать с правами администратора? [Дубликат]


Возможный дубликат:
Запретить повышение (UAC) для приложения, которое не нуждается в нем 

Я использую приложение, написанное до Windows Vista / Windows 7. Windows решила, что приложение должно запускаться как администратор (т. Е. Имеет значок экрана). Я уверен, что приложение не имеет ничего в своем манифестах, что указывает на необходимость запуска с повышенными привилегиями (оно было написано до Windows Vista).

Есть ли способ сказать Windows, что конкретное приложение не нуждается в повышенных привилегиях?


7
2018-01-31 17:35


Источник




Ответы:


Windows автоматически поднимает приложения на основе различных критериев (перечисленных в Понимание и настройка контроля учетных записей пользователей в Windows Vista):

Прежде чем создать 32-битный процесс,   проверяются следующие атрибуты   определить, является ли это   установщик:

  • Имя файла включает такие ключевые слова, как «установка», «настройка», «обновление» и т. Д.
  • Ключевые слова в следующих полях «Ресурсы для версий»: «Поставщик», «Название компании», «Имя продукта», «Описание файла», «Имя исходного файла», «Внутреннее имя» и «Экспорт имени».
  • Ключевые слова в бок о бок манифест, встроенный в исполняемый файл.
  • Ключевые слова в определенных строковых записях, связанных в исполняемом файле.
  • Ключевые атрибуты в данных RC, связанных в исполняемом файле.
  • Целевые последовательности байтов в исполняемом файле.

Если вы не можете предотвратить повышение, переименовав файл, вы сможете создать манифест, который предотвращает возвышение,


13
2018-01-31 18:31



Это автоповышения, основанные на ключевых словах, больны! - nawfal


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

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

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

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

Создайте файл манифеста в той же папке, что и ваше приложение. например., Goldwave.exe вы создаете:

Goldwave.exe.manifest:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
  <assemblyIdentity version="1.0.0.0"
     processorArchitecture="X86"
     name="IsUserAdmin"
     type="win32"/> 
  <description>Description of your application</description> 
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

Заметка: Это так называемый внешний манифест, потому что он находится в отдельном файле. Вполне возможно, что приложение уже имеет манифест.

Манифесты были введены с Windows 2000 как способ объявления зависимостей от определенных версий библиотек DLL. Одно общее использование этого манифеста появилось вместе с Windows XP, чтобы программы заявляли о своей зависимости от версия 6 из comctl32.dll - чтобы приложение было «тематическим».

Если приложение уже имеет встроенный манифест, Windows игнорирует любые внешний манифест. В этом случае вам нужно будет использовать Хакер ресурсов для изменения встроенного RT_MANIFEST (тип ресурса 24).


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

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags
    \Layers

Там вы, скорее всего, найдете большое количество программ, перечисленных с прокладками, разделенными пробелами:

  • C: \ Program Files (x86) \ ACDSee32 \ ACDSee32.exe HIGHDPIAWARE
  • C: \ Program Files (x86) \ Google \ Picasa3 \ Picasa3.exe ELEVATECREATEPROCESS
  • C: \ Program Files (x86) \ skiStunt \ skiStunt \ bin \ skiStunt.exe WINXPSP2
  • C: \ Program Files (x86) \ Steam \ Steam.exe HIGHDPIAWARE ELEVATECREATEPROCESS
  • C: \ Program Files (x86) \ SysInternals \ autoruns.exe ELEVATECREATEPROCESS RUNASADMIN
  • C: \ Program Files (x86) \ Windows Live \ Messenger \ msnmsgr.exe VISTASP2
  • D: \ Games \ Call of Duty \ CoDSP.exe WINXPSP3
  • D: \ Shared \ Win32app \ Spy \ SPYXX.EXE DISABLEDWM

Убедитесь, что ваша программа там отсутствует. Вы также можете найти аналогичный набор записей (те, для которых "все пользователи") в:

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\AppCompatFlags\Layers

9
2018-03-04 13:23



Как идут прокладки? - Michael Slade
@MichaelSlade Когда вы проверяете параметры в свойствах программы Совместимость Вкладка. Эти настройки сохраняются в реестре AppCompatFlags ключ - Ian Boyd


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

Я знаю это по собственному личному опыту. Около десяти лет назад я работал в компании, которая продала свое программное обеспечение в крупную автомобильную компанию. Все их компьютеры были заблокированы. Нам пришлось изменить наш код, чтобы он мог быть установлен кем-то, работающим только с правами «Пользователь».


1
2018-01-31 19:41