新作ソフトのアイデアを思いついた。
機能のひとつとして、
Windows Update 「更新プログラムの確認」をソフト内から起動したい。
「更新プログラムの確認」を起動するには次の exe ファイル(オプション付き)を使う。
wuauclt.exe /showcheckforupdates
"wuauclt.exe" は複数個所に存在するが、
使うのは %windir%\System32 フォルダー内にあるものを使う。
外部プログラムを実行するので Process.Start を使う。
Process.Start で wuauclt.exe /showcheckforupdates を起動する。
一番単純な Start(<string1>, <string2>) の方法を使うことにした。
Process.Start("wuauclt.exe", "/showcheckforupdates")
# %windir%\System32\wuauclt.exe がフルパス。
%windir%\System32 にはパスが通っているので、パス無しでファイル名だけの指定でも可だが、
コードではフルパスで指定している。
が、ファイルが見つからないという例外が発生する。
「ファイル名を指定して実行」で試すと、問題なく実行できる。
何故??
30分以上悩んでしまったが、
コンパイルオプションを変更したら例外は発生しなくなった。
「32 ビットの優先」のチェックを外した。
なお、開発環境は Windows 8.1 Pro 64-bit での Visual Studio Pro 2013 (Update 4)。
32-bit OSでも問題なく動作するか、今から検証してみよう・・・
【2015-04-11 同日追記】
あらら・・・
仮想環境の Windows 7 32-bit 下で実行してみた。
ボタンに配置している Process.Start("wuauclt.exe", "/showcheckforupdates") は無反応。
仮想環境の Windows 7 64-bit 下で実行してみた。
ボタンに配置している Process.Start("wuauclt.exe", "/showcheckforupdates") は無反応。
仮想環境の Windows 8 32-bit 下で実行してみた。
思いどおり Windows Update 更新の確認が現れた。
Windows 7 では「名前を指定して実行」でも wuauclt.exe /showcheckforupdates はダメだった。
%windir%\System32 下に wuauclt.exe は存在するのだが・・・
また、何か手を考えなければならなくなった。
分かったら、続編でご紹介・・・
ブログ記事についてのお問い合わせは「質疑応答 掲示板」で・・・
ここをクリックして、北窓舎のサイトにもお立ち寄りください・・・
機能のひとつとして、
Windows Update 「更新プログラムの確認」をソフト内から起動したい。
「更新プログラムの確認」を起動するには次の exe ファイル(オプション付き)を使う。
wuauclt.exe /showcheckforupdates
"wuauclt.exe" は複数個所に存在するが、
使うのは %windir%\System32 フォルダー内にあるものを使う。
外部プログラムを実行するので Process.Start を使う。
Process.Start で wuauclt.exe /showcheckforupdates を起動する。
一番単純な Start(<string1>, <string2>) の方法を使うことにした。
Process.Start("wuauclt.exe", "/showcheckforupdates")
# %windir%\System32\wuauclt.exe がフルパス。
%windir%\System32 にはパスが通っているので、パス無しでファイル名だけの指定でも可だが、
コードではフルパスで指定している。
が、ファイルが見つからないという例外が発生する。
「ファイル名を指定して実行」で試すと、問題なく実行できる。
何故??
30分以上悩んでしまったが、
コンパイルオプションを変更したら例外は発生しなくなった。
「32 ビットの優先」のチェックを外した。
なお、開発環境は Windows 8.1 Pro 64-bit での Visual Studio Pro 2013 (Update 4)。
32-bit OSでも問題なく動作するか、今から検証してみよう・・・
【2015-04-11 同日追記】
あらら・・・
仮想環境の Windows 7 32-bit 下で実行してみた。
ボタンに配置している Process.Start("wuauclt.exe", "/showcheckforupdates") は無反応。
仮想環境の Windows 7 64-bit 下で実行してみた。
ボタンに配置している Process.Start("wuauclt.exe", "/showcheckforupdates") は無反応。
仮想環境の Windows 8 32-bit 下で実行してみた。
思いどおり Windows Update 更新の確認が現れた。
Windows 7 では「名前を指定して実行」でも wuauclt.exe /showcheckforupdates はダメだった。
%windir%\System32 下に wuauclt.exe は存在するのだが・・・
また、何か手を考えなければならなくなった。
分かったら、続編でご紹介・・・
ブログ記事についてのお問い合わせは「質疑応答 掲示板」で・・・
ここをクリックして、北窓舎のサイトにもお立ち寄りください・・・