2009-10-27 11 views
7

サービスが「ログオン」で実行するように設定されているユーザーアカウント(Local System/User etc)を調べるにはどうすればよいですか?サービスが「ログオン」に設定されているアカウントを確認

similar questionとは異なり、このコードはサービス自体の内部から実行することができず、サービスが実行されていない可能性があります。

System.ServiceProcess.ServiceController」クラスにはステータスを取得するのに便利なメソッドがありますが、「ログオン」ユーザーはありません。

答えて

13

これは私が知っている唯一の方法であり、私はそれを見て見つけてそれをテストしました。あなたはそれが名前をディスプレイのサービス名を使用していないことを確認し、あなたもへの参照を追加する必要がありますSystem.Management

string serviceName = "aspnet_state"; 

SelectQuery query = new System.Management.SelectQuery(string.Format(
    "select name, startname from Win32_Service where name = '{0}'", serviceName)); 
using (ManagementObjectSearcher searcher = 
    new System.Management.ManagementObjectSearcher(query)) 
{ 
    foreach (ManagementObject service in searcher.Get()) 
    { 
     Console.WriteLine(string.Format(
      "Name: {0} - Logon : {1} ", service["Name"], service["startname"])); 
    } 
} 
2

StartNameパラメータでWMIとWin32_Serviceクラスを使用することはどうですか?

This articleが参考になる場合があります。

0

にこれはあなたの仕事

Get-WMIObject Win32_Service | Where-Object {$_.startname -ne "localSystem" }| Where-Object {$_.startname -ne "NT AUTHORITY\LocalService" } |Where-Object {$_.startname -ne "NT AUTHORITY\NetworkService" } |select startname, name 
を行います
関連する問題