都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

ドメインのユーザーでプロセスを起動する

本日の打ち合わせで気になったことがあったので、簡単に検証を行なってみました。ローカルユーザーでログインしている時に、ドメインユーザーとしてプロセスが起動できるのか試してみました。そのソースコードは下記の通りです。

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);
        }
    }
}

 

起動できました。当たり前か。タスクマネージャをチェックするとドメインに登録したユーザーで起動していましたー。 つまんない検証ですいませんでした....