3

私はこのImpersonatorクラスを使用して、ドメインアカウントを偽装し、次のようにネットワーク共有にアクセスしています。

using(new Impersonartor(username, domain, password))
{
//Code Here
}

ネットワーク共有からファイルをコピーしても問題ありません。

using(new Impersonartor(username, domain, password))
{
 CopyAll(uncPath, localPath)
}

ただし、Process.Startを使用してエクスプローラーでUNC共有を表示すると、「ログオンの失敗:不明なユーザー名または不正なパスワード」がスローされます。

using(new Impersonartor(username, domain, password))
{
 Process.Start(uncPath)
}

Impersonatorクラスに障害があるのではないかと疑って、次のようにProcessStartInfoにクレデンシャルを手動で提供しようとしました。

                        System.Diagnostics.ProcessStartInfo viewDir = new System.Diagnostics.ProcessStartInfo(uncPath);
                        viewDir.UseShellExecute = false;
                        viewDir.Domain = netCred.Domain;
                        viewDir.UserName = netCred.UserName;
                        viewDir.Password = ConvertToSecureString(netCred.Password);
                        System.Diagnostics.Process.Start(viewDir);

まだ喜びはありません。認証されたリソースへの以前の接続を確立するために使用したので、netCred(NetworkCredential)が正しいと確信していることに注意してください。

では、ネットワーククレデンシャルを使用してエクスプローラーでUNCパスを表示するにはどうすればよいですか?

4

2 に答える 2

3

私は今日同じ問題を抱えていました、そしてここに私のために働いたものがあります:

private void OpenNetworkPath(string uncPath)
{
   System.Diagnostics.Process.Start("explorer.exe", uncPath);
}
于 2011-03-02T15:47:27.947 に答える
0

uncPathをに渡す代わりに、Process.Startで「explorer」を起動して、uncPathをのプロパティProcess.Startとして渡します。ProcessStartInfoArguments

System.Diagnostics.ProcessStartInfo viewDir = new System.Diagnostics.ProcessStartInfo("explorer.exe");
viewDir.UseShellExecute = false;
viewDir.Domain = netCred.Domain;
viewDir.UserName = netCred.UserName;
viewDir.Password = ConvertToSecureString(netCred.Password);
viewDir.Arguments = uncPath;
System.Diagnostics.Process.Start(viewDir);
于 2010-11-09T09:48:07.887 に答える