У меня есть программа, которую я конвертирую в службу Windows (на C #). Эта программа взаимодействует с внешней DLL, у которой есть метод, который возвращает объект. Объект показывает состояние другой запущенной программы (запущена ли она и зарегистрирована ли программа)
С предыдущей реализацией все работало нормально. Вызов DLL для получения объекта с переменными состояния работал нормально. Теперь, когда я переместил вызов этого метода в службу Windows, он возвращает неправильные значения. Вызов метода DLL возвращает объект состояния, но значения всегда показывают, что программа не запущена или не вошла в систему (если она явно есть).
Я понятия не имею, почему вызов этого метода DLL внутри службы Windows должен изменить возвращаемые переменные.
Что я могу сделать, чтобы убедиться, что вызов DLL работает так, как задумано?
У меня нет доступа к коду DLL, поэтому изменения не могут быть внесены туда.
Вот пример:
AppStateDLL.AppStateObject stateObject = new AppStateDLL.AppStateObject();
if (!stateObject.Online || !stateObject.LoggedIn)
{
//things are broken, because the program is always running and logged in
}
(имена составлены, но вы поняли)
Если я запускаю этот код в объекте Windows Forms, для свойств stateObject свойства Online и LoggedIn устанавливаются как true, поэтому все хорошо. Если я запускаю код из службы Windows, для обеих переменных возвращается false.
И моя служба Windows настроена с доступом по локальной системе, что, я считаю, должно означать, что у нее не должно быть проблем с разрешениями и тому подобным.
Спасибо