ネットワーク上で動作する win アプリケーションを作成しました。
そのフォームの 1 つで、ユーザーはローカル コンピューターからファイルを参照して選択し、それをリストに追加することができます。そのため、アプリケーションはこれらのファイルを、ユーザーがアクセスできないマイ ネットワーク内のフォルダーにコピーしますが、自分用に既に作成したフォルダーにコピーします。アプリケーションなので、彼のユーザー名とパスワードを持っています。ここまではすべて正常に機能します。
このフォームでは、ユーザーはファイルを選択して [開く] ボタンを押して開くこともできるため、ファイルはその拡張子に関連するアプリケーションで開く必要があります (たとえば、test.xlsx は Exel.exe で開く必要があります)。私は Process.Start を使用しました。 ()これを行うには、拡張機能ごとに個別のエラーが発生します(たとえば、メモ帳の場合は「アクセスが拒否されました」、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 メソッドを使用します。