質問

System.Diagnostics.Process.Startメソッドに奇妙な問題があるようです。 3.5 SP1 .NET Frameworkを使用するC#デスクトップアプリケーションがあります。ユーザーがラベルをクリックすると、タグに保存されているフォルダーパスが文字列として関数に渡されます。 Windowsエクスプローラーが正しいフォルダーで起動します。このツールをCitrixにインストールして公開アプリケーションで実行すると、Windowsエクスプローラーは起動しますが、.NET例外メッセージも表示されます"システムは指定されたファイルを見つけることができません"。

System.ComponentModel.Win32Exception: The system cannot find the file specified
at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(String fileName)

正常に起動したばかりのファイルパスが存在し、サーバーにローカルでログオンしたときにコードがエラーなしで機能します。公開アプリケーションとしてエラーが発生します。私のコードは次のとおりです

Label label = (Label)sender;
if (label.ForeColor == Color.Blue) {
   if (System.IO.Directory.Exists(label.Tag.ToString()) == false)
   {
      MessageBox.Show("The specified folder does not exist:" + 
            Environment.NewLine + Environment.NewLine + label.Tag.ToString(), "",
            MessageBoxButtons.OK, MessageBoxIcon.Information);
      return;
   }
   System.Diagnostics.Process.Start(label.Tag.ToString()); 
}

このページを見つけました http://forums.citrix.com/thread.jspa ?messageID = 1382638 ただし、サーバーにIISがありません。

誰でも助けられますか?

ありがとう、 ロブ

役に立ちましたか?

解決

フォルダー名でプロセスを開始しようとする代わりに、プロセス" explorer.exe"を開始します。フォルダーの名前をコマンドライン引数として渡します。 explorer.exeで受け入れられるコマンドライン引数のリストは、ここで見つけることができます:

http://support.microsoft.com/kb/314853

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top