Приложение требует повышенных привилегий для запуска на Win7, но не Vista - PullRequest
1 голос
/ 06 мая 2010

У меня есть простое приложение, которое я только что попробовал установщик (Innosetup) на win7 (32-разрядная версия).

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

Кто-нибудь знает, почему это происходит на этом компьютере, но не на xp-32, win7-64 bit или Vista 64-bit?

Если я разрешаю приложению работать (отвечает да на системное приглашение), оно вылетает только с ошибкой «обнаружена ошибка. Windows ищет решение», а затем закрывается.

Ответы [ 4 ]

1 голос
/ 14 мая 2010

У меня была та же проблема, что и у вас на машине с Windows 7, установленной через установщик NSIS: у приложения был значок «щит» над панелью запуска и ярлык на рабочем столе.

Мы решили это, добавив эту простую строкук сценарию NSIS, который создает наш установщик:

RequestExecutionLevel user

http://nsis.sourceforge.net/Docs/Chapter4.html (поиск UAC)

Надеюсь, это поможет решить вашу проблему.

1 голос
/ 11 мая 2010

Скорее всего, это связано с тем, что «помощник по совместимости программ» думает, что ваше приложение несовместимо (как вы его не указали), и «догадываетесь», что оно требует повышения прав.

Попробуйте добавить правильный Манифест приложения , чтобы указать, что повышение прав не требуется, и что Vista и Windows 7 являются поддерживаемыми операционными системами ... Вот пример:

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
         <requestedExecutionLevel level="asInvoker" uiAccess="False">
         </requestedExecutionLevel>
       </requestedPrivileges>
    </security>
  </trustInfo>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
     <application>
        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>
        <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"></supportedOS>
     </application>
  </compatibility>
</assembly>
0 голосов
/ 10 мая 2010

Вероятно, это не связано с установщиком, но является целью ярлыка (Ваше приложение?)

Если Windows считает, что ярлык указывает на программу, требующую повышения прав, она отобразит значок наложения экрана,Он будет отображаться, если у цели есть манифест с требуемым значением ExectionLevel для requireAdministrator (И наибольший доступный, если вы являетесь администратором), ИЛИ у цели нет манифеста "Vista", и Windows обнаруживает, что это приложение исправления / установки / установки или приложениес проблемами совместимости.

Я предполагаю, что ваше приложение не имеет манифеста.Если вы хотите удалить оверлей, попробуйте добавить манифест с требуемым значением ExectionLevel asInvoker (не то, что это отключит виртуализацию и другие вещи совместимости для этого приложения)

0 голосов
/ 10 мая 2010

Я могу ответить хотя бы на один из ваших вопросов:

Вы не увидите значок щита в XP, потому что в WinXP нет понятия высоты.WinXP не поддерживает UAC , который был впервые представлен в Vista.

Однако Vista32 / 64 и Win7-32 ​​/ 64 все поддерживают UAC, поэтому я не могу себе представить, почему будетразница в поведении только в Win7-32.Вы повозились с настройками UAC в других тестируемых ОС?

...