C# 不会将文件下载到“我的文档”文件夹

C# 不会将文件下载到“我的文档”文件夹,c#,activex,C#,Activex,我的一个客户对我的ActiveX控件有问题。ActiveX应该下载Excel文件,将其保存在“我的文档”中的文件夹中,然后运行Excel并打开该文件 以下是用于下载和打开文件的代码段: private string Checkout(string strFileUrl, string strPhysicalDir, string strPhysicalName) { string strMyDocumentFolder = Environm

我的一个客户对我的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”

这使我困惑。为什么
文件.Exists
返回
true
?是Windows文件虚拟化启动了,并且文件保存在VirtualStore文件夹中吗?如果是这样,我们如何才能阻止这种行为?或者是我的客户机器中的其他东西导致了这种行为

我还不能在自己的机器上重现这个问题。如果你知道我会非常感激的

我客户的计算机设置

  • 操作系统:Windows7
  • 浏览器:IE 10
  • 杀毒软件:McAfee

如果缺少一些相关信息,我会尝试获取。

将Internet Explorer置于保护模式并启用UAC会导致
系统.诊断.进程.启动(strFilePath)未按预期运行

使用此代码将打开Excel文件,即使是在保护模式下

Process myProcess = new Process();
myProcess.EnableRaisingEvents = false;
myProcess.StartInfo.FileName = "excel";
myProcess.StartInfo.Arguments = String.Format(@"""{0}""", strFilePath);
myProcess.Start();

我将尝试设置一个断点来检查传递给函数的值是否与您期望的值相同。另外,使用Path.Combine方法将有助于删除所有字符串concats。我可以验证strFilePath是否是我所期望的,因为我会在异常中返回它。谢谢你的路径。组合方法,不知道那一个!