1

アプリケーションでは、別のユーザーの資格情報を使用して他のプログラムを実行する必要があります。現在、私はSystem.Diagnostics.Process.Startを使用してプログラムを実行しています:

public static Process Start(
   string fileName,
   string arguments,
   string userName,
   SecureString password,
   string domain
)

ただし、この機能は必要なネットワークからローミング プロファイルをロードしません。

「runas /profile ...」を使用してプロファイルをロードし、コマンドを実行することもできますが、それではパスワードが要求されます。もっとエレガントな方法があるはずです...

しかしここで?

4

2 に答える 2

7

私の解決策(leppieのヒントに基づく):

        Process p = new Process();

        p.StartInfo.FileName = textFilename.Text;
        p.StartInfo.Arguments = textArgument.Text;
        p.StartInfo.UserName = textUsername.Text;
        p.StartInfo.Domain = textDomain.Text;
        p.StartInfo.Password = securePassword.SecureText;

        p.StartInfo.LoadUserProfile = true;
        p.StartInfo.UseShellExecute = false;

        try {
            p.Start();
        } catch (Win32Exception ex) {
            MessageBox.Show("Error:\r\n" + ex.Message);
        }
于 2008-12-03T14:56:53.830 に答える
6

System.Diagnostics.ProcessStartInfo.LoadUserProfile

于 2008-12-03T14:12:47.943 に答える