1

アクセス権を持つユーザーになりすまして、安全なネットワーク フォルダーから WORD ファイルを開く方法を探して Web を検索しています。私が答えを見つけるのに最も近いのは、2年前からのこれでした:
Impersonating in .net (C#) & opening a file via Process.start

これが私が使用しているコードです。引数 = LocalFile_Test を設定すると、ユーザーがアクセスできるローカル c:\ にアクセスしているため、すべてが完全に機能します。しかし、arguments = RemoteFile_Test を設定すると、Word は空白のドキュメントを開きます。これは、引数にゴミを入れたのと同じ効果です。そのため、以下のプロパティで指定したユーザー/ドメイン/パスワードでログインしても、ファイルが見つからないように見えますが、その正確なファイル名を見つけることができ、空ではありません。すぐに何かが飛び出しますか?お時間をいただきありがとうございます。

Dim LocalFile_Test As String = "C:\New.docx"
Dim RemoteFile_Test As String = "\\Server1\Apps\File\New.docx"

Dim MyStartInfo As New System.Diagnostics.ProcessStartInfo
MyStartInfo.FileName = "C:\Program Files\Microsoft Office\Office12\WINWORD.exe "
MyStartInfo.Arguments = LocalFile_Test

MyStartInfo.LoadUserProfile = True
MyStartInfo.UseShellExecute = False

MyStartInfo.UserName = "specialuser"
MyStartInfo.Domain = "mydomainname"
MyStartInfo.Password = New System.Security.SecureString()
MyStartInfo.Password.AppendChar("p"c)
MyStartInfo.Password.AppendChar("a"c)
MyStartInfo.Password.AppendChar("s"c)
MyStartInfo.Password.AppendChar("s"c)

Process.Start(MyStartInfo)
4

1 に答える 1

1

私の理解では、パスワードで保護されたファイルをサーバーから取得しようとしており、プロセスを開始すると、空白の単語 doc が開くだけです。エラーはファイルを取得しようとしている方法だと思います。サーバー上のファイルの実際の物理パスを次のようにマップする必要があると思います

  System.Web.HttpContext.Current.Server.MapPath("\\Server1\Apps\File\New.docx")

そこから、次のようなユーザーのネットワーク資格情報を作成する必要があると確信しています。

  System.Net.NetworkCredential=New NetworkCredential(userName:=, password:=)

最後に、それが完了したら、ファイルを書き込むか、ファイルを送信することができます...

    System.Web.HttpContext.Current.Response.TransmitFile(file name)
    System.Web.HttpContext.Current.Response.WriteFile(file name)

次に、ファイルを取得したら、プロセス開始でそれを開こうとすることができます。

私が言ったことがうまくいかない場合はお知らせください。

于 2012-10-27T05:50:45.823 に答える