Я думаю, что вы на правильном пути, я не уверен, почему вы хотите редактировать значения, просто используйте файл (или раздел реестра) в качестве маркера, чтобы указать, что служба была запущена и работает. Во время постепенного отключения уберите маркер. Затем вам нужно просто найти наличие маркера, чтобы узнать, корректно ли вы были отключены или разбились.
Если вы обнаружите, что файл не создан надежно, убедитесь, что вы закрываете, очищаете и удаляете объект файла, а не полагаетесь на сборщик мусора.
--- РЕДАКТИРОВАТЬ после уточнения ---
Таким образом, требование заключается в системе лицензирования, а не просто в том, чтобы определить, была ли служба корректно завершена. Я предполагаю, что желание состоит в том, чтобы «лицензии» были очищены при постепенном завершении работы и восстановлены после сбоя, сценарии являются взаимозаменяемыми.
Я бы, вероятно, использовал хранилище базы данных с подходящей безопасностью для хранения лицензионных ключей на сервере. Поскольку каждый клиент подключается и запрашивает лицензию, ему предоставляется ключ, который должен быть представлен для каждого сообщения от клиента. Сервер явно проверяет, что представленный ключ действителен для текущего сеанса. Если сервер будет корректно выключен, он может очистить таблицу ключей, если он выйдет из строя, то ключи все равно будут присутствовать и их можно будет почитать. Это, наверное, самый простой подход, который я могу придумать, это безопасный.
Если в истории есть еще что-то, дайте нам знать.