私の顧客の 1 人が私の ActiveX コントロールに問題を抱えています。ActiveX は、Excel ファイルをダウンロードし、それをマイ ドキュメントのフォルダに保存してから、Excel を実行してファイルを開くことになっています。
ファイルをダウンロードして開くためのコード スニペットを次に示します。
private string Checkout(string strFileUrl, string strPhysicalDir, string strPhysicalName)
{
string strMyDocumentFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string strCiroDocFolder = String.Format(@"{0}\CiroDoc", strMyDocumentFolder);
string strCheckoutFolder = String.Format(@"{0}\{1}", strCiroDocFolder, strPhysicalDir);
string strFilePath = String.Format(@"{0}\{1}", strCheckoutFolder, strPhysicalName);
try
{
if (!Directory.Exists(strCiroDocFolder))
Directory.CreateDirectory(strCiroDocFolder);
if (!Directory.Exists(strCheckoutFolder))
Directory.CreateDirectory(strCheckoutFolder);
if (File.Exists(strFilePath))
File.Delete(strFilePath);
WebClient myWebClient = new WebClient();
myWebClient.DownloadFile(strFileUrl, strFilePath);
}
catch (Exception e)
{
return e.Message;
}
return Run(strFilePath);
}
private string Run(string strFilePath)
{
if (!File.Exists(strFilePath))
return "filenotfound";
if (IsExecutable(strFilePath))
return "isexecutable";
try
{
System.Diagnostics.Process.Start(strFilePath);
}
catch (Exception e)
{
//This get returned
return String.Format("{0} ({1})", e.Message, strFilePath);
}
return "success";
}
Run メソッドは、「コマンドがプログラムに送信されたときにエラーが発生しました」という例外を返します。
マイ ドキュメント フォルダを確認すると、ファイルがありません。そこにないので、Run メソッドが停止して "filenotfound" を返すことを期待します。
これは私を混乱させます。なぜFile.Exists
返品するのtrue
ですか?Windows ファイルの仮想化が開始され、ファイルが VirtualStore フォルダーに保存されますか? もしそうなら、どうすればその行動を止めることができますか?または、この動作を引き起こすのは、顧客のマシンの他の何かでしょうか?
自分のマシンではまだこの問題を再現できていません。あなたがどのように私が感謝するか知っていれば.
顧客のコンピューターのセットアップ
- OS: Windows7
- ブラウザ:IE10
- ウイルス対策: マカフィー
関連する情報が不足している場合は、取得しようとします。