У меня такая проблема, мне нужно, чтобы моя программа запускалась при запросе пароля пользователя (когда компьютер включен). Я знаю, что существует класс RegistryKey как в C ++, так и в C #, но они заставляют программу запускаться при входе пользователя. Могу ли я это сделать?
Возможно, вы захотите взглянуть на функцию CreateService в MSDN:
SC_HANDLE WINAPI CreateService(
_In_ SC_HANDLE hSCManager,
_In_ LPCTSTR lpServiceName,
_In_opt_ LPCTSTR lpDisplayName,
_In_ DWORD dwDesiredAccess,
_In_ DWORD dwServiceType,
_In_ DWORD dwStartType,
_In_ DWORD dwErrorControl,
_In_opt_ LPCTSTR lpBinaryPathName,
_In_opt_ LPCTSTR lpLoadOrderGroup,
_Out_opt_ LPDWORD lpdwTagId,
_In_opt_ LPCTSTR lpDependencies,
_In_opt_ LPCTSTR lpServiceStartName,
_In_opt_ LPCTSTR lpPassword
);
За dwStartType использование SERVICE_AUTO_START
За lpServiceStartName Вы можете использовать НОЛЬ чтобы заставить его использовать учетную запись LocalSystem или любой из следующих: NT AUTHORITY \ LocalService или же NT AUTHORITY \ NetworkService. Чтобы узнать больше о том, что могут предложить разные аккаунты, прочитайте Сервисные учетные записи пользователей в MSDN.
Для lpPassword ты можешь использовать НОЛЬ если вы использовали любое из значений выше.
Для lpBinaryPathName Вы должны указать путь к файлу вашего сервиса.
Если вы не уверены в другом, вы должны взглянуть на образец кода «Базовый сервис Windows на C ++ (CppWindowsService)«в MSDN. Пример кода, вероятно, будет хорошей отправной точкой.
Спасибо всем, что я использовал службу Windows.