를 실행하는 방법을 내 프로그램에서는 하기 전에 로그아웃 windows XP?

StackOverflow https://stackoverflow.com/questions/324220

문제

내가 찾는 것은 역 버전의"RunOnceEx".

RunOnceEx 가 프로그램 일부를 실행하기 전에 사용자의 껍질(데스크탑 및 작업 표시줄)를 시작합니다.로그인이 진행하지 않을 계속하기 전에 runonceex 완료합니다.

하고 싶어 정확히 동일한지만 사용자가 로그아웃.그녀/그가 로그아웃,실행 중인 모든 프로그램을 종료를 떠나,쉘(데스크탑 및 작업 표시줄),다음""나는 나의 프로그램이 실행하는 이 순간에"",마지막으로 로그아웃.

나는 그것이 가능하다고 생각하기 때문에"mobsync.exe 는"하는 것입니다.그러나 나는 찾을 수 없습니다 어떻게 그것을 할 수 있습니다.

도움이 되었습니까?

해결책

이 현재 사용자에 대해서만 사용할 수 있습니다 WMI 을 얻을 수 있는 정보를 종료/로그아웃이 발생합니다.

중 하나를 작성하는 작은 C#(또는 다른 언어를 사용할 수 있는 WMI)응용 프로그램 또는 vbs 스크립트에서 수신 Win32_ComputerShutdownEvent WMI 이벤트입니다.

예를 들어 C#응용 프로그램은 여기에서 찾을 수 있습에 이 질문은: 을 얻을 로그오프 이벤트터 시스템

다른 팁

경고로 말 , gpedit.msc 를 구성할 수 있는 스크립트 로그오프 모든 사용자.

필요하신 경우는 스크립트에 대해서만 하나의 사용자,당신은 그것을 선언에서 직접 이 레지스트리에서 모두 HKCUHKLM.

에서 발견한 첫 번째 결과에 대해 구글에서 나

프로그램을 실행하는 스크립트를 만들 수 있습니하는 그것을 실행하고 그룹 정책을 사용하여 적용니다.에 그룹 정책을 편집기로 이동합하여 사용자 구성-->윈도우 설정->스크립트가(로그온/로그오프)

자세한 내용은 여기를

을 원하는 경우 실행 프로그램 코드를 실행하에 로그오프,당신은 연결 WM_QUERYENDSESSION 메시지를 찾습니다 lParam 의 가치 ENDSESSION_LOGOFF (0x80000000).

그것의 중요한 테스트를 위한 이 lParam 가치가 있기 때문에 다른 사람을 나타내는"강"-즉귀하의 프로세스할 수 있는 죽기 전에 당신의 코드도 실행할 수 있습니다.사실,대부분 종료/세션이 끝 메시지도를 당신에게 기회를 마지막으로 실행 거리에 정리 코드가 없는 안전에 대응하는 긴-실행하는 행동;하지만 이는 특정 조합을 확인해야합니다.

참고:적도 실제로 실행하려면 별도의 프로세스에 대한 응답 WM_QUERYENDSESSION 메시지입니다.그것은 가능한 창문 관리자가 허용하지 않는 이처럼,그것이 종료하는 동안.그것을 시도하고 볼 것 같아요.

에 있는 경우.NET 환경(당신이 지정하지 않은)가장 빠른 방법은 이벤트를 추가하는 핸들러를 Microsoft.Win32.SystemEvents.SessionEnding 이벤트입니다.

당신은 무엇이 필요하다의 구현 GINA.실행할 수 있습니다 귀하의 사용자 정의 명령에 WlxIsLogoffOk 함수 호출할 때 사용자는 로그오프

을 만들면 적절한 지나 dll 등록할 수 있습니다 그것은 여기: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\@GinaDLL

여기에 구현할 수 있는 귀하의 요구에 맞게(그것이 제공하는 로그오프트 레지스트리 키를 지정할 수 있습니다 당신의 명령):http://wwwthep.physik.uni-mainz.de/~frink/newgina_pre09/readme.html

로 VonC 및 TFD 이미 언급했듯이,그룹 정책을 편집기는 또 다른 방법을 조작하는 레지스트리에 있습니다.

다만으로 gpedit 의 변경 내용(Userconfig-윈도우 설정,스크립트)를 당신이 좋아하고 그 후에서 살펴보고 레지스트리에 [HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\Scripts] 하는 방법을 찾을 수행할 수 있습니다

또한 내 PC(에 걸려있는 도메인)은 숨겨진 폴더 C:\WINDOWS\System32\GroupPolicy 하위 사용자 및 기계입니다.모두 갖는 추가라는 하위 폴더를 종료하고 시작합니다.어쩌면 사용할 수도 있습니다 이런 것들입니다.

당신이 무언가를 필요로 하는 경우에는 간단하고 작업에 대한 단일(또는)사용자 만들 수 있는 간단한 응용 프로그램에서는 C++또는 C#에 대한 예입니다.

가장 간단한 데 C#에서 트레이(통해 추가 단순히 트레이를 구성 요소를 형성)고 등록 및 이벤트에 대한 처리기 에서 formclosing 이벤트입니다.그것과 같습니다:

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (e.CloseReason != CloseReason.UserClosing)
        {
            // It's not the user closing the application,
            // Let's do whatever you want here, for example starting a process
            Process notePad = new Process();

            notePad.StartInfo.FileName   = "notepad.exe";
            notePad.StartInfo.Arguments = "ProcessStart.cs";

            notePad.Start();
        }
    }

그래서 당신의 응용 프로그램을 시작할 것으로 윈도우 또는 사용자에게 있습니다.그것은 기다릴(사용하여 조금의 메모리)에 뭔가를 할 때는 시스템이 종료되거나 사용자가 로그오프,etc.(확인하여"CloseReason"위).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top