2016-07-09 11 views
0

У меня был проект VB6, который ранее не требовал UAC на сервере 2008 R2. В моих последних сборках есть значок UAC (User Access Control) на значке программы. Когда я пытаюсь открыть приложение, Windows запрашивает административные права.UAC теперь требуется для проекта VB6, у которого его не было до

Единственные изменения, которые я сделал, это то, где приложение ищет свой файл настроек. Раньше эти файлы привязывались к статическому местоположению в C:\app\. Поскольку я предпочитаю стиль .NET с настройками в приложении, я сделал код сначала локальным, используя App.Path, а затем посмотрим на предыдущее статическое местоположение, если файл не существует локально.

ответ

1

Оказалось, что App.Path является причиной приглашения UAC. Я прокомментировал одну строку кода, и значок щита исчез. Кажется, что эвристика для UAC предполагала, что я буду писать в папку Program Files.

Код был только чтением файла, и ForReaading был указан при использовании метода FileSytemObjectOpenTextFile.

МОЙ АЛЬТЕРНАТИВА

CurDir, кажется, работает для меня, так как файл только для чтения при запуске. Одно из предостережений заключается в том, что во время отладки CurDir установлен в EXE-путь. Он отлично работает, когда приложение скомпилировано.

Однако, если вы откроете проект, открыв файл .vbp (дважды щелкните, например) непосредственно в папке, будет корректно указан CurDir. Это только путь EXE к IDE, когда вы сначала открываете IDE, а затем открываете проект из среды IDE.

https://stackoverflow.com/a/154595/2084315

+0

Там нет эвристики здесь. 'App.Path' основан на том, где ваше приложение установлено (установлено), и вы, очевидно, установили его в защищенном UAC месте, таком как Program Files. Конечно, вы всегда можете использовать окно сообщения, чтобы узнать, где находится «App.Path». –

+0

@HarryJohnston Я попробовал манифест - он был открыт без UAC, но UAC немедленно вернул ошибку, указав, что необходимы повышенные разрешения. – ps2goat

+0

@KenWhite - приложение было расположено в 'D: \ AppName \ AppName.exe'; он также не установлен - просто переносимый исполняемый файл. – ps2goat

 Смежные вопросы

  • Нет связанных вопросов^_^