я написал программу на c ++ из win32, unicode; он использует сокет для чтения данных из другой программы;
я проверил это на местном ПК; я скомпилировал его с vs2008;
при использовании в режиме консоли, он работает как в winxp, так и в win7;
при использовании в качестве ntservice он работает в xp, но не работает в windows7;
в win7, то есть его сокет работает хорошо, и он может выводить журналы, используемые logcplus, но он не может получить доступ к API другой программы для чтения данных; между тем, его журналы не могут отображаться в debugview, хотя я выводил журналы, использующие OutputDebugString в режиме отладки;
http://technet.microsoft.com/zh-cn/query/bb203962(v=VS.71) говорит:
Сессия 0 Изоляция
Службы всегда запускались в сеансе 0. До Windows Vista первый пользователь, который вошел в систему, также был назначен для сеанса 0. Теперь сеанс 0 зарезервирован исключительно для служб и других приложений, не связанных с интерактивным сеансом пользователя. (Первый пользователь для входа в систему подключен к сеансу 1, второй пользователь для входа в систему подключен к сеансу 2 и т. Д.) Сессия 0 не поддерживает процессы, которые взаимодействуют с пользователем.
Это изменение означает, что служба не может опубликовать или отправить сообщение приложению, а приложение не может отправить или опубликовать сообщение службе . Кроме того, службы не могут напрямую отображать элемент пользовательского интерфейса, например диалоговое окно. Служба может использовать функцию WTSSendMessage для отображения диалогового окна в другом сеансе.
если это причина, то как ее решить?
спасибо