ネットワーク資格情報を使用して、process.start(パス)を介してネットワーク共有にアクセスする

StackOverflow https://stackoverflow.com/questions/4132035

質問

使ってます これ domainアカウントになりすまして、次のようなネットワーク共有にアクセスするためのなりすましクラス:

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

ネットワークシェアからファイルをコピーすることは大丈夫です:

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

ただし、Process.startを使用してExplorerで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);

まだ喜びはありません。認証されたリソースへの以前の接続を行うために使用していたので、私のnetcreded(networkcredential)が正しいことに注意してください。

それでは、ネットワーク資格情報を使用して、ExplorerのUNCパスを表示するにはどうすればよいですか?

役に立ちましたか?

解決

私は今日も同じ問題を抱えていましたが、これが私のために働いたものです。

private void OpenNetworkPath(string uncPath)
{
   System.Diagnostics.Process.Start("explorer.exe", uncPath);
}

他のヒント

uncpathをに渡す代わりに Process.Start, 、「Explorer」を開始してみてください Process.Start そして、uncpathを渡します ProcessStartInfo's Arguments 財産。

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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top