none
사용자 로그온 시, 특정 GUI 프로그램을 자동실행하는 방법에 대한 문의입니다. RRS feed

  • 질문

  • 제목과 같이 사용자 로그온 시점에 특정 GUI 프로그램을 실행할 수 있도록 [서비스 프로그램]을 제작하였습니다.

    서비스 프로그램은 '서비스와 데스크톱 상호 작용 허용'을 설정하였으며, 로그온 한 사용자의 세션 정보를 취득하여 CreateProcessAsUser() API를 사용합니다.

    테스트 시 다이얼로그, 메모장 등 일반 GUI 프로그램의 실행은 확인됩니다.
    그런데 트레이 아이콘을 사용하는 프로그램은 작업 표시줄에 트레이 아이콘 등록이 되지 않는 문제가 발생합니다.
    (작업 관리자를 통해 확인해보면 해당 프로세스는 실행되어 있습니다.)

    Shell_NotifyIcon(NIM_ADD, &nid) 호출 시점에 로그를 찍어보면 리턴 값은 FALSE 이며, GetLastError는 0으로 반환 됩니다.

    작업표시줄의 생성 시점과 트레이 아이콘의 추가 시점이 맞지 않아 발생하는 것으로 예상되는데, 프로그램의 실행 주체가 서비스 프로그램이기 때문에 "TaskbarCreated" 등의 메시지는 수신이 안되는 것 같습니다.

    위 문제는 어떤 방식으로 풀어나가야 할지 감이 잡히지 않아 여기에 문의 드립니다.
    감사합니다.
    2020년 7월 31일 금요일 오전 2:19

모든 응답

  • 1. 문제되는 Windows 장치에서 명령 프롬프트에 winver를 입력하고 os 버전 번호를 확인하시기 바랍니다 [예: windows 10  enterprise 1809 (os build 17763.316)]

    2. "그런데 트레이 아이콘을 사용하는 프로그램은 작업 표시줄에 트레이 아이콘 등록이 되지 않는 문제가 발생합니다."
    "작업표시줄의 생성 시점과 트레이 아이콘의 추가 시점이 맞지 않아 발생하는 것으로 예상되는데..."
    사용자가 Windows 장치에 로그온 할 때 어떤 서비스 응용 프로그램을 실행하려고 하는가요?
    문제가된는 응용 프로그램 공급 업체에 문의하시면 이 응용 프로그램의 실행 규칙을 변경할 수 있을가요?

    3. 아래와 같이 로그온 taskscheduler를 만든 다음 서비스 프로그램을 삽입하면 이슈를 해결할수 있는지 시도해 보시기 바랍니다.

    MSDN Community Support Ricky

    다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    2020년 8월 3일 월요일 오전 9:43
    중재자