Если вы сопоставляете свои входящие и исходящие состояния со стандартными состояниями Lync, вам не нужно явно публиковать статус при выходе из системы / завершении работы. Когда пользователь выходит из машины, Lync должен автоматически установить статус «Автономно», поэтому при условии, что статус сопоставлен с «Out», пользователь должен автоматически установить ваш статус «Out»
Если я что-то не так понимаю ...
Изменить - хорошо, я понимаю, почему вам нужно перехватить событие завершения работы - чтобы предложить пользователю установить заметку при выходе из системы. Я не думаю, что вы можете что-то сделать с Lync API, чтобы обойти это. Как вы сказали, проблема в том, что ваше приложение получает уведомление о закрытии, но к тому времени уже слишком поздно, поскольку самому Lync также было приказано завершить работу, поэтому нет никаких гарантий, что вы можете попросить его изменить статус заметки пользователя.
Я думаю, что лучшее, что вы можете сделать, - это использовать функцию Win32 ShutdownBlockReasonCreate - пример использования ее из управляемого кода здесь . К сожалению, это поддерживается только в Vista или выше.