Вопрос

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

Обратите внимание, что файл, который я хочу дать разрешения, уже находится на целевой машине. И я хочу изменить разрешения этого файла через другую программу, написанную в C #, и у нее есть административные разрешения, чтобы сделать все.

Пожалуйста, дайте мне знать, как это сделать, я использую этот код

        System.Security.AccessControl.FileSecurity fs = File.GetAccessControl(@"c:\inam.exe");
        FileSystemAccessRule fsar = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow);
        fs.AddAccessRule(fsar);
        File.SetAccessControl(@"c:\inam.exe", fs);

Этот код правильно изменит разрешения, но все же, когда я выполняю inam.exe после выполнения этого кода UAC не появился, а также inam.exe не может выполнять административные операции.

На самом деле я уже развернул заявку на более чем 10000 клиентов, поэтому хочет освободить патч для решения проблемы административных прав.

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

Решение

Построить файл манифеста (см. http://www.gregcons.com/kateblog/addingamanifesttoavistaApplication.aspx. Среди других мест) и назовите его чтоhat.exe.Manifest и поместите его в одну и ту же папку, что и EXE. Nanifest должен установить запросExeCuteCutionLevel для требованийМинерстратора. Все готово.

Если у вас есть другой EXE, вы можете встроить манифест при его создании. Это почти тривиально в Visual Studio 2008 и вверх. См. Вкладка «Приложение» и выпадайте вниз, выпадающие замыкающие. Есть инструкции поблизости. Кроме того, когда вы используете VS 2008, чтобы добавить манифест к вашему проекту, вам не нужно вводить все XML, вы просто скопируете соответствующий запрошенный уровень выполнения из комментариев, которые сгенерированы для вас.

Другие советы

Выполнить с административными привилегиями не является разрешением файлов.

Это обычно настроено путем добавления Манифест файл (либо к ресурсам Win32 в EXE или в качестве внешнего манифеста). Этот файл Mainest может указывать, необходимо ли приложение запускать повышенные или нет.

Я не совсем уверен, что Windows скрывает «запустить эту программу как настройку совместимости администратора».

Использование файла манифеста является лучшим подходом, но альтернатива будет программно установить флаг «Запустить эту программу в виде администратора» (параметр, на которой вы найдете на вкладке совместимости свойств EXE), установив простой ключ реестра. Вам необходимо создать строковое значение (REG_SZ) под одним из этих клавиш (если вы хотите, чтобы настройки были на пользователя или на машину, соответственно):

HKEY_CURRENT_USER Software Microsoft Windows NT Centreversion AppCompatflags слои

или

HKEY_LOCAL_MACHINE Программное обеспечение Microsoft Windows NT Centreversion AppCompatflags слои

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

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