そうすると、System.Diagnostics.Process クラス の Start メソッドの挙動が変わってしましました。
具体的には string 型でURLを渡すと標準ブラウザが起動してくれいたのが、Win32Exception が発生するようになってしまってました。
標準ブラウザが起動しないとOAuth2認証が困るのですが・・・
パラメータ付きで起動することはできるので、実行ファイルのパスさえわかればなんとかなりそうです。ちなみに、explorer.exe にURLをパラメータとして私もOKですが、OAuth2認証のように長いクエリストリング付きのものはうまく行かない。
Windows10 の標準ブラウザはレジストリの「HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice」にProgIdが保存されています。
更に、ProgIdは「HKEY_CLASSES_ROOT\{ProgId}\shell\open\command」の規定に実行ファイルのパスが記載されています。
以上を踏まえまして
string progId = Microsoft.Win32.Registry.CurrentUser.OpenSubKey( @"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice", false) .GetValue("ProgId") .ToString(); string command = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey( string.Format(@"{0}\shell\open\command", progId), false) .GetValue(null) .ToString() .Replace("%1", "{0}"); Process.Start(string.Format(command, "https://www.lutheta.jp/")); |
0 件のコメント:
コメントを投稿