我写了一个在网络上运行的win应用程序。
在其中一个表单中,用户可以从本地计算机浏览并选择文件并将其添加到列表中,因此应用程序将这些文件复制到“我的网络位置”中的文件夹中,用户无法访问该文件夹,但我已创建了一个文件夹已经为我的申请,所以我有他的用户名和密码。每件事情都可以在这里工作。
在此表单中,用户也可以通过选择它并打开按钮打开文件,因此该文件应该在与其扩展名相关的应用程序中打开(例如test.xlsx应该在Exel.exe中打开)。我使用过Process.Start()执行此操作但是对于每个扩展,我收到一个单独的错误(例如 NotePad 的“ Access被拒绝”和“ RunTime错误“for AdobeReader ”和“没有足够的内存”用于 Excel 。)
我的错误是什么?
注意: 我已使用ImpersonatUser在我的应用程序中登录该用户。
编辑:我使用以下代码打开文件:
Using(WindowsImpersonationContext impersonateUser = LogonMethod())
{
ProcessStartInfo pInfo = new ProcessStartInfo(filePathWithExtension);
pInfo.Domain = MyDomainName;
pInfo.UseShellExecute = false;
Process.Start(pInfo);
}
注意: 我的LogonMethod使用advapi32.dll的LogonUser方法。
答案 0 :(得分:0)
您所看到的行为几乎是预料之中的。
答案 1 :(得分:0)
我无法解决此问题,因此我使用了另一种方式。我已将文件复制到临时文件夹,然后使用Process.Start
打开此新文件。