Манифест приложения, права администратора и автозапуск в Windows Vista \ 7 - PullRequest
3 голосов
/ 16 декабря 2011

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

Я создал файл app.manifest.Он отлично работает.

Но теперь мне нужно настроить автозапуск программы в Windows, и у меня возникли проблемы с этим.Если в моей программе есть файл app.manifest - программа не загружается при запуске Windows, но когда я удаляю файл app.manifest - он работает хорошо.

Вот код из файла app.manifest:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="update.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>

  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->
    </application>
  </compatibility>
</asmv1:assembly>

Спасибо за вашу помощь.

Ответы [ 2 ]

4 голосов
/ 09 июля 2012

Он не работает, потому что когда вы запрашиваете доступ администратора, пользователь должен авторизовать его как администратор (нажмите кнопку Разрешить UAC), если он не появляется, должно быть что-то в трее значков, куда пользователь может загрузить все заблокированные exe, нажав на значок, чтобы дать права администратора. когда вы запускаете без манифеста, он работает только потому, что по умолчанию работает под стандартным доступом (без прав администратора, с базовыми правами на уровне пользователя), поэтому ваше приложение работает, но не может вносить изменения в систему или файл / элементы доступа к пути, которые могут выполнять только приложения с повышенными правами администратора. Получить меня?

Вопрос в том, как заставить ваш exe-файл автоматически запускаться с правами администратора, если он был установлен и изначально запускался с повышенными правами администратора во время его установки? Кажется, есть несколько ответов на это, но я все еще ищу, какие из них действительно работают и надежны. По сути, если он был повышен один раз, он должен продолжать повышаться (автоматически, без запроса пользователя), когда он запускается автоматически (сразу после перезагрузки) - но он этого не делает, и в этом проблема. Дайте мне знать, если вы добьетесь прогресса в этом.

ОБНОВЛЕНИЕ: 2012.11.10:

Я нашел решение, используя планировщик задач Windows для программно планировать как задачу (т.е. запускать EXE во время перезагрузка / запуск) и у вас есть возможность запустить его как приложение с повышенными правами, и я думаю, что вы должны быть повышены, чтобы иметь возможность запланировать эту повышенную запись автозапуска в задаче Windows планировщик. Кажется странным, я знаю, но MS допустил это (и только это) как способ автоматического поднятия ваших приложений во время запуска, и они не предоставили другого способа сделать это. Итак, используйте соответствующие API для зарегистрируйте расписание задач Windows, которое будет запускать ваше приложение с повышенными правами.

0 голосов
/ 16 декабря 2011

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

...