System.Diagnostics.Process.Startの問題
質問
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で受け入れられるコマンドライン引数のリストは、ここで見つけることができます:
所属していません StackOverflow