Как я могу программно отредактировать файл хостов в Windows 7/Server 2008?

StackOverflow https://stackoverflow.com/questions/3193374

Вопрос

Я пишу небольшую утилиту WPF для управления записями в файле хостов для целей DEV. Как вы, возможно, знаете, файл хостов защищен более новым OSS (Win 7/2008/Vista).

Я добавил манифест в свою заявку, чтобы установить запрос на «requiredministrator», как подробно здесь (Используя «простой путь») и в связанном вопросе здесь.

К сожалению, это не сработало для меня. При запуске приложения не существует призывов, и вызов файла. отклонен."

Hostschanger.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="HostsChanger" type="win32"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator"/>
        </requestedPrivileges>
    </security>
</trustInfo>
</assembly>

Любые идеи?

Это было полезно?

Решение

Перефразировано из моего предыдущего комментария, превратился в ответ:

Ответ HO1 дал содержит приложение. Manifest, который точно такой же, как приложение, над которым я работаю на работе, и возвышение работает для него. Разница здесь заключается в том, что имя файла - это «app.manifest», а опция проекта «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="HostsChanger" />
   <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>
</asmv1:assembly>

В противном случае, работа вокруг может заключаться в том, чтобы иметь отдельное приложение «загрузчика», с которого начинается пользователь, и это только запускает ваш реальный инструмент WPF, используя Verb runas Как подробно в это пост в блоге (так Process.StartInfo.Verb = "runas";).

Я собираюсь сделать удар в темноте здесь и скажу, что это проблема подписи подлинности. Я не слышал, чтобы вы что -то упоминали о подписании вашего приложения. Насколько я понимаю, в отличие от Vista, в Windows 2008/7 единственный способ запустить повышенное приложение - это манифест подписанного приложения, который определяет уровень привилегий, который нуждается в приложении. Если вам нужна помощь в подписании, вот статья о том, как подписать свое приложение: http://msdn.microsoft.com/en-us/library/bb756995.aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top