北の窓から(芦田っち)

PC関連と私的雑感のブログ。
2015年7月10日、カッコ内に名前を加えました。昔の友だちに気付いてほしくて・・・

Visual Studio 2013 - VB.Net: Process.Start で例外発生(ファイルが見つからない)

2015-04-11 11:40:06 | 北窓舎
新作ソフトのアイデアを思いついた。

機能のひとつとして、
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 は存在するのだが・・・

  また、何か手を考えなければならなくなった。
  分かったら、続編でご紹介・・・


ブログ記事についてのお問い合わせは「質疑応答 掲示板」で・・・


ここをクリックして、北窓舎のサイトにもお立ち寄りください・・・



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 脆弱性の多いソフト・・・ト... | トップ | 明日は何の日? Windows Upd... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

北窓舎」カテゴリの最新記事