Я могу использовать следующую команду, чтобы узнать, находится ли сервер терминалов Windows в режиме установки.
change user /query
Как я могу обнаружить это программно через Windows API?
Похоже, что нет поддерживаемого способа сделать это.
Kernel32.dll экспортирует требуемую функцию, но документация не рекомендует ее использовать. Также в документации нет альтернативного варианта.
BOOL TermsrvAppInstallMode(void);
http://msdn.microsoft.com/en-us/library/bb432494(v=VS.85).aspx
Полагаю, вам нужно свойство TerminalServerMode в Win32_TerminalServiceSetting WMI-классе
Эта статья Technet содержит пример сценария, который вы, вероятно, можете адаптировать для проверки свойства.
Чтобы сделать это в собственном winapi (без использования WMI), вы можете посмотреть недокументированные функции в winsta.dll или проверить реестр .