У меня есть решение нескольких приложений Windows Forms. У меня также есть SQL Server. Я создал приложение, предназначенное для того, чтобы показать нам, кто использует одно из наших приложений и на каком компьютере они находятся, загрузив имя приложения, имя пользователя, путь к исполняемому файлу, который они запустили, и дату / время его запуска в таблицу. в SQL Server.
Пользователь запускает одно из наших приложений. Мы будем называть это родительским приложением. Родительское приложение запускает приложение WhoIsLoggedIn.exe и передает ему идентификатор процесса родительского приложения. Приложение WhoIsLoggedIn загружает информацию на SQL Server, а затем периодически проверяет, запущен ли родительский процесс. Когда приложение WhoIsLoggedIn больше не работает, он выполняет запрос DELETE, чтобы удалить ранее вставленную запись из таблицы.
Проблема заключается в том, что приложение WhoIsLoggedIn является дочерним по отношению к родительскому приложению в дереве процессов. поэтому, если пользователь нажимает кнопку «Завершить задачу» в диспетчере задач, оба приложения немедленно завершают работу, и приложение WhoIsLoggedIn не имеет возможности УДАЛИТЬ запись из таблицы SQL Server. Если пользователь обычно закрывает родительское приложение (или завершает процесс), то, как только приложение WhoIsLoggedIn замечает, что родительский процесс больше не выполняется, он запускает запрос DELETE, чтобы удалить запись «Пользователь / родительское приложение» из таблицы SQL Server. .
До того, как кто-либо запустит его, из-за STIG у нас нет доступа к командной строке, поэтому я не могу использовать CMD для запуска приложения WhoIsLoggedIn.
Есть ли другие способы сделатькроме того, скажем, создание службы, которая следит за нашими приложениями?
Я пытался установить ShellExecute как True, так и False, но это не сработало. Я попытался запустить процесс из Program.cs и из события Form_Load родительского приложения, но ничего не работает.
Спасибо.