如何使用System.Diagnostics.Process.Start防止Access Denied错误

时间:2011-08-25 19:30:06

标签: wpf process permissions access-denied

我的WPF应用程序允许用户添加“附件”(Word,Excel,文本文档等)。 该应用在尝试在我们公司网络上打开文件时生成拒绝访问错误。执行Process.Start后发生错误。 shell应用程序打开(即文本文件的记事本),然后出现“拒绝访问”消息。最初我尝试写文件时有类似的错误,但我使用Impersonator类found here修复了这个问题。

以下是问题代码:

using (Impersonator impersonator = new Impersonator())
{
    System.Diagnostics.Process process = new System.Diagnostics.Process();
    process.StartInfo.FileName = pathToDocument;
    process.StartInfo.UseShellExecute = true;
    process.Start();
}

我这样做会得到同样的错误:

using (Impersonator impersonator = new Impersonator())
{
    System.Diagnostics.Process process = new System.Diagnostics.Process();
    process.StartInfo.FileName = pathToDocument;
    process.StartInfo.UserName = "uid";
    process.StartInfo.Domain = "domain";
    process.StartInfo.Password = new System.Security.SecureString();
    foreach (Char c in "password")
    {
        process.StartInfo.Password.AppendChar(c);
    }
    process.StartInfo.UseShellExecute = false;
    process.Start();
}

即使我硬编码自己的用户ID和密码(我有“完全控制”权限来读取,写入,执行等),部署的应用程序也会失败。如果我将文档路径更改为具有宽松安全性的不同共享驱动器(每个人都被授予完全控制权),一切正常。该应用程序部署了基本的ClickOnce设置。该应用程序未安装在用户计算机上 - 仅在线提供。 如何防止拒绝访问错误?

提前致谢。

0 个答案:

没有答案