私のコードを正しくインデントしなかった場合、事前にお詫び申し上げますが、これは私の最初の投稿です。ですから、私の最終目標は、notepad.exeプロセスが開始され、それに応答してmspaint.exeが起動されたときにイベントを監視するWindowsサービスを作成することです。これはWindowsサービスで初めての作業ですが、このコードをコンソールアプリケーションとして、またデバッグモードでWindowsサービスとして動作させることができました。しかし、私がそれをインストールしてリリースとしてテストするときは、うまくインストールされ、問題なく起動しますが、notepad.exeを起動すると何も起こりません。Windowsサービス上のManagementEventWatcherはデバッグでは動作しますが、インストール時には動作しません
**MyNewService.cs**
public MyNewService()
{
InitializeComponent();
System.IO.File.Create(AppDomain.CurrentDomain.BaseDirectory +"Initialized.txt");
}
public void OnDebug()
{
OnStart(null);
}
protected override void OnStart(string[] args)
{
WqlEventQuery query = new WqlEventQuery("__InstanceCreationEvent", new TimeSpan(0, 0, 1), "TargetInstance isa \"Win32_Process\"");
ManagementEventWatcher watcher = new ManagementEventWatcher(query);
watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
watcher.Start();
}
protected override void OnStop()
{
System.IO.File.Create(AppDomain.CurrentDomain.BaseDirectory + "OnStop.txt");
}
static void watcher_EventArrived(object sender, EventArrivedEventArgs e)
{
string instanceName = ((ManagementBaseObject)e.NewEvent["TargetInstance"])["Name"].ToString();
if (instanceName.ToLower() == "notepad.exe")
{
Process.Start("mspaint.exe");
}
}
}
**Main Program**
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main(string[] args)
{
#if DEBUG
MyNewService myService = new MyNewService();
myService.OnDebug();
System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
#else
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MyNewService()
};
ServiceBase.Run(ServicesToRun);
#endif
}
}
:下記のリンクを参照してください。あなたの質問はあまり正確ではなかったかもしれませんが、それを修正してください。 –
ローカルシステムでサービスをインストールして実行したサービスインストーラを使用しました。デバッグはIDEで実行され、ローカルシステムでは実行されませんでした。デバッグとビルドは同じことを成し遂げました。バックグラウンドでしかビルドできませんでした。これは、「すべてのユーザーを表示」チェックボックスを使用してタスクマネージャーを監視することによって確認されました。 これは、パッチ適用時にサードパーティのソフトウェアをコマンドプロンプトでメンテナンスモードにするために開発されたものです。コマンドプロンプトを表示する必要がないので、実際には必要に応じて作業しました。このコードは11月以降の大規模な生産環境であり、問題は発生していません。 –