Я создал приложение .NET С# WinForms на Win 7 RTM x64, которое позволяет сказать, что я вызвал DataInstaller.
Когда я запускаю эту программу за пределами отладчика (просто пустую форму без функции на данный момент), она работает нормально, пока я не закрою форму. Затем я получаю сообщение от помощника по совместимости программ, в котором говорится:
Возможно, эта программа не установлена правильно
Затем я получаю возможность переустановки с использованием рекомендуемых параметров или сказать, что установка действительно работала, как ожидалось.
Если я называю приложение DataThingy, это не проблема, я думаю, это связано с тем, как программы, называемые * Setup, получают значок щита UAC.
Я предполагаю, что будет что-то простое, что я могу помещать в манифест приложения, чтобы предотвратить это?
Я не уверен, что это происходит в Vista, поскольку у меня нет доступа в настоящее время.
Изменение имени не является опцией, и выключение UAC не является вариантом, поэтому, пожалуйста, не предлагайте это!
Edit:
OMG.
Кажется, что если любое из следующих утверждений верно, UAC вставляет свое весло в:
Имя Exe содержит слово Installer
AssemblyInfo.cs
AssemblyTitle contains the word 'Installer'
e.g. [assembly: AssemblyTitle("DataInstaller")]
AssemblyProduct contains the word 'Installer'
e.g. [assembly: AssemblyProduct("Data Installation Utility")]
"Установщик" также может быть "Setup".
Это порождает веру, это действительно так. Очевидно, один из старых программистов VB6 переместился в команду UAC в Редмонде.
Мне все еще нужно обходное решение, я не готов признать, что мое приложение не может быть вызвано установщиком, потому что оно не касается реестре или не помещает файлы в папку Program Files.
Я предполагаю, что UAC поставит машину в полную блокировку, если я попытаюсь выполнить мое приложение IAmAVirus.exe. (На самом деле, я не пытаюсь это сделать, потому что я не совсем уверен, что я просто глуп)