От новичка до гуру: Курсы программирования на CyberDuff

Как сравнить два исполняемых файла?

У меня есть файл, который не требует предупреждения UAC. Я скопировал файл в другое место, используя С#.NET

 File.Copy("Original.exe", "Copy.exe");

Теперь я вижу, что Copy.exe требует предупреждения UAC для запуска под Windows 7/Vista.

Как я могу сравнить Original.exe и Copy.exe, чтобы точно увидеть, что произошло с файлом, и изменить его вручную, чтобы он больше не требовал UAC. Какой инструмент я могу использовать для достижения этого?

введите здесь описание изображения

ОБА ИСПОЛНЯЕМОГО ФАЙЛА ЯВЛЯЕТСЯ ОДНИМ ФАЙЛОМ: как узнать разницу между этими двумя файлами?


  • Является ли Copy.exe реальным именем целевого файла? Windows использует обнаружение установщика, которое помечает некоторые файлы с ключевыми словами updater/setup/install в имени файла как требующие прав администратора. 16.07.2012
  • Нет, это просто пример. Оригинальное имя UpdatePriv.exe 16.07.2012
  • Чем дело обстоит. Попробуйте удалить часть обновления из имени файла. 16.07.2012
  • связанный вопрос: stackoverflow.com/questions/4133337/ 16.07.2012
  • вау @max ты великолепен .. Большое спасибо 16.07.2012
  • @max, пожалуйста, добавьте свой комментарий в качестве ответа. 16.07.2012

Ответы:


1

Windows Installer Detection Technology является причиной такого поведения. Существует ряд условий, при которых исполняемый файл считается требующим прав администратора:

  1. 32-битные исполняемые файлы
  2. Приложения без запрашиваемого ExecutionLevel
  3. Интерактивные процессы, работающие от имени обычного пользователя с включенным LUA

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

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

Связанная статья MSDN: http://technet.microsoft.com/en-us/library/cc709628%28WS.10%29.aspx

Возможные решения:

  • Если вы являетесь автором исполняемого файла, включите манифест с указанным requestedExecutionLevel
  • Если у вас нет доступа к исходному коду - попробуйте добавить или изменить манифест, используя соответствующие утилиты (например, mt или, возможно, какой-нибудь универсальный редактор ресурсов)
  • Избегайте ключевых слов update, install и setup в имени исполняемого файла.
16.07.2012

2

После копирования файла попробуйте установить acl файла следующим образом:

var file = new FileInfo("copy.exe")
 var fileSecurity = file.GetAccessControl();
 fileSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null),
                                                                FileSystemRights.FullControl,
                                                                AccessControlType.Allow));
 file.SetAccessControl(fileSecurity);
16.07.2012

3

Вы можете обнаружить, что проблема связана с местоположением, а не с файлом. Win 7 очень суетлива, особенно если вы пытаетесь что-то изменить в Program Files.

Пробовали ли вы поместить исходный файл в новое место, чтобы проверить, требуется ли для этого утверждение UAC?

15.07.2012
  • Да, пробовал! Всякий раз, когда я использую метод File.Copy(), скопированный файл требует одобрения UAC! 16.07.2012
  • Итак, правильно ли я предполагаю, что если вы вручную переименуете и скопируете файл в новое место, вам не потребуется одобрение UAT? 16.07.2012
  • Новые материалы

    ИИ меняет этику в руководстве
    Связь искусственного интеллекта, лидерства и этики Сострадание, глубокое понимание чужих страданий в сочетании с желанием облегчить их, возвышается как неотъемлемая человеческая добродетель...

    Представляем Narwhal Technologies (Nrwl)
    6 декабря 2016 г. Маунтин-Вью, Калифорния С тех пор, как Виктор Савкин и я (Джефф Кросс) присоединились к команде Angular в Google на заре Angular 1, Angular продемонстрировал феноменальный..

    Путь AWS  — «Изучение машинного обучения — 10 начинающих ИИ и машинного обучения на AWS».
    Универсальный ресурсный центр для изучения искусственного интеллекта и машинного обучения. НОЛЬ или ГЕРОЙ, начните свое путешествие здесь. Получите решения и пройдите обучение у экспертов AWS...

    5 простых концепций Python, ставших сложными
    #заранее извините 1) Переменные x = 4 y = 5 Переменная в Python — это символическое представление объекта. После присвоения некоторого объекта переменной Python мы приобретаем..

    «Освоение вероятности: изучение совместной, предельной, условной вероятности и теоремы Байеса —…
    Виды вероятности: Совместная вероятность Предельная вероятность Условная вероятность Диаграмма Венна в вероятностях: В “Set Theory” мы создаем диаграмму Венна...

    Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
    Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

    Отслеживание состояния с течением времени с дифференцированием снимков
    Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..