Моя программа Visual Basic будет копировать файлы в папку с программными файлами, поэтому я должен использовать привилегии requiredAdministrator
, так как asInvoker
не позволяет писать в папку с программными файлами.
После того, как я скопирую файлы, я вызываю скрипт AutoIt, автоматизирующий настройку файлов во внешней программе (для этого скрипт вызывает внешнюю программу для запуска автоматизации). Программа, которая создает и копирует файлы в «конец», работает нормально. Сценарий, вызывающий программу "конец" и выполняющий автоматическую настройку, также работает.
Когда я комбинирую 2, «конечная» программа (которую я не писал и не имею исходного кода) ведет себя хаотично при запуске от имени администратора (не читает базу данных или необходимые файлы возвращают ошибку и завершает работу). Так что запускать от имени администратора не вариант. Но поскольку моя программа должна работать от имени администратора, похоже, что она передает те же привилегии сценарию AutoIt, который также вызывает «конечную» программу от имени администратора. Это также происходит, если я вызываю программу «конец» из своего приложения вместо сценария AutoIt.
Есть ли способ понизить мое приложение от администратора до обычного пользователя после того, как оно скопирует файлы, прямо перед вызовом сценария AutoIt или «конечной» программы, чтобы «конечная» программа не запускалась как администратор или параметр, который специально заставляет приложение вызывать внешнюю программу как обычный пользователь?
Я использую Process.start("autoitscript.exe")
для вызова. Или любой другой обходной путь, который не включает скрипт AutoIt, вызывающий «конечную» программу и мое приложение, потому что это работает, но не так, как я намеревался.