バッチファイルを使って時刻同期をする

ちょいとメモ

    /// <summary>
    /// 時刻同期を行うクラスです。
    /// </summary>
    public static class SyncMachineTime
    {
        private const string WorkFolder = @"C:\work\";
        private const string BatFilePath = WorkFolder + "SyncNetTime.bat";

        /// <summary>
        /// 時刻同期を実行する。
        /// 時刻を取得するホストが存在しない場合、例外はスローされません。
        /// </summary>
        /// <param name="hostNo">接続先ホストNo</param>
        public static void Execute(int hostNo)
        {
            // 実行するコマンドを作成
            string hostName = getHostName(hostNo);
            if (string.IsNullOrEmpty(hostName))
                return;

            string command = "net time " + hostName + " /set /y ";

            try
            {
                // バッチファイルを作成
                System.IO.File.WriteAllText(BatFilePath, command);

                // バッチファイルを実行
                var psInfo = new System.Diagnostics.ProcessStartInfo();

                psInfo.FileName = BatFilePath;      // 実行するファイル
                psInfo.CreateNoWindow = true;       // コンソールウィンドウを表示しない
                psInfo.UseShellExecute = false;     // シェル機能を使用しない

                var ps = System.Diagnostics.Process.Start(psInfo);
                ps.WaitForExit();
            }
            catch
            {
                // 例外発生時は何もしない
            }
            finally
            {
                // 作成したバッチファイルを削除する
                System.IO.File.Delete(BatFilePath);
            }
        }

        private static string getHostName(int hostNo)
        {
            switch (hostNo)
            {
                case 1: return ##########;
                case 2: return ##########;
                case 3: return ##########;
                default: return null;
            }
        }
    }