Как найти (и удалить) местоположения в моем коде, которые требуют прав администратора? - PullRequest
1 голос
/ 20 мая 2019

У меня есть многопроцессорное приложение, которое изначально разрабатывалось в XP и изначально разрабатывалось без учета прав администратора. Мы привыкли настраивать и продавать компьютеры с программным обеспечением. Сейчас мы продаем приложение без аппаратного обеспечения для установки в пользовательских системах в корпоративной среде. В настоящее время наш программный пакет требует, чтобы наши пользователи работали в режиме администратора, что не делает нас популярными среди ИТ-отделов наших клиентов.

Я работал над удалением элементов, которые, очевидно, требуют привилегий администратора (запись в HKLM в реестре, запись в папки Program Files). Однако Windows продолжает требовать права администратора для запуска программного обеспечения. Если я отказываю в правах, он закрывается без логов. В нем много унаследованного кода, и подсказки, чтобы найти, где происходит доступ администратора, оказались трудными.

Существует ли простой способ узнать, что происходит или выполняется, что соответствует требованиям администратора Windows 10?

В настоящее время я удалил запись файлов данных, которые я мог идентифицировать, в папку Program Data или в пользовательские документы. (в зависимости от того, хочу ли я, чтобы пользователи могли легко их найти или нет).

Файлы конфигурации были перемещены в пользовательские папки.

Доступ к ключу реестра был сохранен в HKLU или только для чтения в HKLM.

1 Ответ

0 голосов
/ 20 мая 2019

Спасибо всем за помощь. В итоге я нашел ответ в модуле запуска C # для нашего программного обеспечения, который запускал все процессы с установленным глаголом «runas»:

        try
        {
            myProcess.StartInfo.Verb = "runas";
            myProcess.StartInfo.FileName = command;
            myProcess.StartInfo.WorkingDirectory = workingDir;
            myProcess.StartInfo.Arguments = prams;
            myProcess.Start();

} catch (Exex ex) {}

Я удалил глагол «runas», и теперь система не запрашивает привилегии администратора для запущенных фрагментов кода.

Я нашел причину, когда попытался настроить отладочный запуск из каталога Program Files и запустил код, не проходя через панель запуска. (запущено в отладчике) Система не запрашивала административных разрешений, что привело меня обратно к панели запуска. Недавно я запустил панель запуска без административных разрешений, поэтому я предположил, что проблема в других процессах. Кажется, я ошибся.

...