質問: trueでインストーラから呼び出されると、Process.Start(someUri)が失敗する カスタムインストーラークラスを使用するWindowsインストーラーセットアッププロジェクトを作成し、カスタムインストーラークラス内のどこにでも `Process.Start(someUri);` を配置すると、セットアップが完了するとProcess.Start()プロジェクトプロパティ `InstallAllUsers` がtrueに設定されています。 InstallAllUsersをfalseに設定すると、Process.Start()は期待どおりに機能します。 Start()が失敗すると、例外はスローされず、Start()*の呼び出しに続くコードはまだ実行されますが、指定したuriは開かれません。* *私はこれについての説明を見つけるのは大したことはない。誰がこのようなことが起こるのかについて何か光を当てることはできますかありがとう! **Edit:** I'm growing suspicious this is a Chrome-specific anomaly. Process.Start() works as expected with IE. Since InstallAllUsers implies a machine level installation, I'm now wondering if the fact that Chrome is installed to a user-specific AppData directory is part (or all) of the problem.*
回答: http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(SYSTEM.DIAGNOSTICS.PROCESS);k(PROCESS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&rd=true;k(PROCESS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&rd=true) 問題が見つかりました。 helpのProcessクラスの例には、次のコメントがあります。 ``` // url's are not considered documents. They can only be opened // by passing them as arguments. ``` つまり、「デフォルトブラウザ」を使用しようとすると問題が発生します。アプリケーション(IExplorer.exe)をURLに指定する必要がある