2009-03-25 18 views
5

Windows Updateが有効になっているかどうかを.NETから確認する方法はありますか?Windows Updateが有効になっているかどうかを.NETから確認する

私のアプリにログインするたびに、コンピュータが危険にさらされている可能性があり、Windows Update Webサイト(またはWindowsのコントロールパネルから更新アプリケーション)へのリンクをユーザーに求めるメッセージを表示します。

XP、Vista、Windows 7上で動作するのがよいでしょう。レジストリキーがあるか、それともAPIが優れているのでしょうか?

答えて

8

まずWUApiLibへの参照を追加し、 "C:\ WINDOWS \ SYSTEM32 \ Wuapi.dll"

を、あなたは、このコードスニペットを使用することができます。

MSDN: "ServiceEnabledプロパティは、自動更新に必要なすべてのコンポーネントが利用可能かどうかを示します。"

設定auc.Settings.NotificationLevelには、現在のモードに関する情報が含まれています。 http://msdn.microsoft.com/en-us/library/aa385806(VS.85).aspx

+0

このDLLを参照した後にWindows 7 x64 Ultimateでこのエラーが発生します。 タイプWUApiLib.AutomaticUpdatesClassにはコンストラクタが定義されていません 助けてください。ありがとう –

2

次のレジストリキーを確認できます。

HKEY_LOCAL_MACHINE 
    SOFTWARE 
    Microsoft 
    Active Setup 
     Installed Components 
     {89820200-ECBD-11cf-8B85-00AA005B4340} 

IsInstalledの値が1の場合、Windows Updateがインストールされています。この質問に

http://windowsitpro.com/article/articleid/15266/how-can-i-detect-if-windows-update-is-installed-on-a-machine.html

I実際に本当に好きanother answerが、残念ながら、それだけで実現可能ではないかもしれない、XP SP3でサポートされます:

この

から取られました。

+0

これはインストールでき、モードが「無効」になっています... –

1

また、PROCESSオブジェクトを使用してWindows Updateサービスが実行されているかどうかを確認することもできます。これらの線に沿って

何か:メモリが提供する場合

Function CheckIfServiceIsRunning(ByVal serviceName As String) As Boolean 
    Dim mySC As ServiceProcess.ServiceController 
    mySC = New ServiceProcess.ServiceController(serviceName) 
    If mySC.Status = ServiceProcess.ServiceControllerStatus.Stopped Then 
     ' Service isn't running 
     Return False 
    ElseIf mySC.Status = ServiceProcess.ServiceControllerStatus.Running Then 
     ' Service already running 
     Return True 
    End If 
End Function 

、該当するサービスが「WUAUSERV」と命名され

5

もちろん、それを行うにはあなたの選択ですが、WindowsUpdateであったことが数分おきに促さ取得スイッチを切ったのは、XPのユーザビリティの問題でした。

あなたはユーザーを苛立たせたくありません。あなたはそれらを愛するべきです。そして、正直なところあなたの仕事がないので、WUがオフになっているかどうかチェックするような、私的なことには絶対に関与しないでください。

+1

SOのような名前の誰かがこのような健全なアドバイスを提供すると知っていたのですか? +1 – BFree

+0

ありがとうございます。私はちょうどいくつかのブランドを変更しました。 – User

0

マイケルPiendlの答えは私のために動作しませんでした が、それは私がそれを動作させるために必要な情報を与えた:

WUApiLib.AutomaticUpdatesClass auc = new WUApiLib.AutomaticUpdatesClass();<br> 
string notificationLevel = auc.Settings.NotificationLevel.ToString();<br><br> 

notificationLevel文字列から選択されるものをオプションに応じて異なるものに等しくなります「自動更新」ダイアログ。

関連する問題