我编写了一个可以在网络上运行的 win 应用程序。
在其中一种形式中,用户可以浏览并从本地计算机中选择文件并将其添加到列表中,因此应用程序将这些文件复制到“网上邻居”中的一个文件夹中,没有用户可以访问它,但我已经为我创建了一个应用程序,所以我有他的用户名和密码。到目前为止,一切正常。
在此表单中,用户还可以通过选择文件并按打开按钮打开文件,因此文件应在与其扩展名相关的应用程序中打开(例如 test.xlsx 应在 Exel.exe 中打开)。我使用过 Process.Start () 这样做,但对于每个扩展,我都会收到一个单独的错误(例如,记事本的“访问被拒绝”和 Adob eReader的“运行时错误”和Excel的“内存不足” )。
我的错误是什么?
注意: 我已使用 ImpersonatUser 在我的应用程序中登录该用户。
编辑:我使用以下代码打开文件:
Using(WindowsImpersonationContext impersonateUser = LogonMethod())
{
ProcessStartInfo pInfo = new ProcessStartInfo(filePathWithExtension);
pInfo.Domain = MyDomainName;
pInfo.UseShellExecute = false;
Process.Start(pInfo);
}
注意: 我的 LogonMethod 使用 advapi32.dll 的 LogonUser 方法。