本日の打ち合わせで気になったことがあったので、簡単に検証を行なってみました。ローカルユーザーでログインしている時に、ドメインユーザーとしてプロセスが起動できるのか試してみました。そのソースコードは下記の通りです。
using System;
using System.Windows.Forms;
using System.Security;
using System.Diagnostics;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var info = new ProcessStartInfo();
//ドメイン名を指定
info.Domain = "domain name";
//パスを指定する。
info.FileName = @"C:\Windows\notepad.exe";
//IDを指定する。
info.UserName = "ryu";
//SecureStringクラスでパスワードを生成する。
var secPassword = new SecureString();
var userPassword = "xxxxxxxx";
foreach (char c in userPassword.ToCharArray())
secPassword.AppendChar(c);
//SecureStringを設定する。
info.Password = secPassword;
//作業領域を設定する。各OSで普遍なパスを指定する
info.WorkingDirectory = @"C:\Windows\";
//プロセスをユーザーとして開始するためには、プロセス オブジェクトで UseShellExecute プロパティを false に設定しなければなりません。
info.UseShellExecute = false;
//プロセスを起動する。
Process.Start(info);
}
}
}
起動できました。当たり前か。タスクマネージャをチェックするとドメインに登録したユーザーで起動していましたー。 つまんない検証ですいませんでした....