0

重複の可能性:
Process.Start() 偽装の問題

C# で別のユーザーとしてコンソール アプリケーションを実行しようとしていますが、問題が発生しています。ここに私のコードの一部があります:

public void encryptPGP(string fileName)
{
    string sCommandLine = "" +
                "--recipient \"User Name <username@domain.com>\" --encrypt \"" + fileName + "\"";

    System.Diagnostics.Process.Start("C:\\Utilities\\GnuPG\\App\\gpg.exe", sCommandLine);
}

... 特定のユーザーが C:\Utilities\GnuPG\App\gpg.exe を実行する必要があります。それをどのように追加しますか?

これは Web アプリケーションで使用されます。

ありがとう!

4

1 に答える 1

1

このSystem.Diagnostics.ProcessStartInfoクラスを使用して、プロセスを開始するユーザー資格情報を提供できます。以下のサンプルコードを参照してください。

string userPwd = "secretPassword";
System.Security.SecureString pwd = new System.Security.SecureString();
foreach (char c in userPwd.ToCharArray())
{
    pwd.AppendChar(c);
}

System.Diagnostics.ProcessStartInfo inf = new System.Diagnostics.ProcessStartInfo();
inf.FileName="path to file";
inf.Domain = "domainname";
inf.UserName = "desired_user_name";
inf.Password = pwd;

System.Diagnostics.Process.Start(inf);

私は個人的にこのソリューションをテストしていませんが、フレームワーク 2.0 以降では機能するはずです。

お役に立てば幸いです。

于 2012-09-20T04:42:51.577 に答える