1

私はac#(。net)Windowsサービスを持っており、Windowsの起動時またはユーザーのログイン時(休止状態からの復帰を含む)に何かを実行する必要があります。サービスはこれをどのように検出できますか?それに固有のWindowsイベントはありますか?

4

1 に答える 1

1

Windowsの起動については、 Environment.TickCountを使用する最も簡単な方法を確認してください。おそらく、以前のWindowsの起動値をconfigに保存して、それらと比較する必要があります。

Environment.TickCountが十分でないか、非常に簡単な場合:)次に、WMIを使用します。

public void BootTime(){    
    SelectQuery query = new SelectQuery("SELECT LastBootUpTime FROM Win32_OperatingSystem WHERE Primary='true'");
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);

    foreach (ManagementObject mo in searcher.Get())
    {
        DateTime dtBootTime = ManagementDateTimeConverter.ToDateTime(mo.Properties["LastBootUpTime"].Value.ToString());
        Console.WriteLine(dtBootTime.ToString());
    }
}

コメントの1つで述べられているように、ログオン/ログオフを検出するには、SystemEventsクラスとイベントSessionSwitchを使用します。

メッセージポンプが実行されている場合にのみ機能することに注意してください。Windowsサービスでは、非表示のフォームが使用されているか、メッセージポンプが手動で開始されていない限り、このイベントは発生しません。

于 2012-05-13T07:43:47.523 に答える