2016-07-27 5 views
0

Windowsサービスから現在のユーザーに警告する必要があります。 私はインターネット上でいくつかの複雑な方法を見てきましたが、ほとんどが日付が付いています。私はシンプルなものを望んでいる は、Windows 10 私は簡単なメッセージを持っているWPFアプリケーションを作成しているしようとしていますひとつのアイデア...visual c# - 現在のユーザーにWindowsサービスから通知する最も簡単な方法は何ですか

System.Diagnostics.Process.Start("C:\\blah\\WpfApplication1.exe"); 

のために一緒に来ている...しかし、それは、以来、バックグラウンドで実行されますサービスは、どのユーザーにそれを実行させるかを知らない。 したがって、現在ログインしているデスクトップユーザーを取得する必要があります(複数のユーザーがいる場合は、すべてのユーザーに通知します)。それで、どういうわけかCreateProcessAsUserやそれと同様のものを使うことができたら、そのトリックができます。 ありがとうございます。

+0

I [貼り付けグーグルへのご質問の件名の肉](HTTPS:ピクセルが述べたように

using Microsoft.Win32; // for registry key using System; using System.Collections; // for getfiles using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; // for log writing using System.IO; // for file watcher, file i/o, directory.exists using System.Linq; using System.Net; using System.Runtime.InteropServices; // for SHGetKnownFolderPath using System.Security.Permissions; // for file watcher, registry key using System.ServiceProcess; using System.Text; using System.Threading; // for sleep using System.Timers; // for timers 

次に、すべてあなたがしなければならないようなあなたのサービスの中からそれを呼び出すです://www.google.com/search?q =何が+最も簡単な方法+ + +現在の+ユーザー+ + + +ウィンドウ+サービスから)トップ3ヒットがんばろう! –

+0

私が言及したように、私はすでにそれをしました。それらの記事は5〜6歳です。ユーザー通知を参照するものは複雑です。 –

答えて

0

Windowsサービスは、Microsoftとユーザーとのやり取りをしないように設計されたシステムと呼ばれる昇格状態で実行されます。しかし、Microsoftが書いたこの名前空間を使用してサービスからアプリケーションを起動する方法があります。here

+0

1つのマイクロソフトへのリンクは有望に見えます。私はそれを試して、私は参照が不足しているように見えるエラーのおとぎを得る。このリンクには、あまりにも頻繁に起こる必要な参照は記載されていません。私はWTSとwtsapi32.dllと何か関係がある参照が必要かもしれないように見えますが、一致する参照を見つけることができません。 –

+0

既存のWindowsサービスに含めることについてのエラーメッセージが表示されましたか?最初にコンパイルしてから、Project-> Add Reference-> Browseを選択してBrowseをクリックして、既存のWindowsサービスに追加してから、実行可能ファイルを探してください。 [OK]をクリックし、 'CSCreateProcessAsUserFromServiceを使用して 'を追加してください – pixel

+0

実行ファイルはどこにありますか? wtsapi32.dllについて話していますか? –

0

ユーザーピクセルは、私の質問に答えが、私は提供したかった:

はこれについてstackoverflowの答えがあり、あなたのコード内の名前空間を含めると
CreateProcessAsUserWrapper.LaunchChildProcess(PATH_TO_EXE)

それを実行します将来のサーチャーのための詳細。コードはhttp://www.getcodesamples.com/src/FBB7577C/7A33AB93にありますが、それが消えてもCreateProcessAsUserWrapperを検索するだけです。 Service1.csワークスペースにコードを貼り付け、すでに名前空間があるので、先頭の名前空間の行と対応する括弧を削除します。だから、最初の行は次のようになります。

class CreateProcessAsUserWrapper 

また、ファーストクラスでなければならない、あなたのサービスクラス後にそれを置きます。私は使用しているステートメントを追加する必要はなかったので、どのステートメントが使用されているのかわかりません。私は以下に使用したすべてを貼り付けます。

CreateProcessAsUserWrapper.LaunchChildProcess("C:\\blah\\WpfApplication1.exe") 
関連する問題