C# 日付時刻を変更する

   

PCのシステム時刻(日付、時刻)を設定することが可能です。
.NET Frameworkが登場する前でも、PCのシステム時刻(日付、時刻)設定は可能で
Windows API(SetLocalTime)で実行することができます。

ただ、.NET Frameworkそのものにまったく存在しないわけでなく、”Microsoft.VisualBasic”名前空間にあるDateAndTimeクラスなどを用いて
システム時刻を変更することが可能です。

 

実際のコードを書いてみる

コードは下記のようになります。

 

大きく、コンストラクタで指定して設定を行う方法と、日付や時刻を文字列でプロパティにセットするという方法です。

 

デバッガからは動かない?

ただ、最近のWindowsで、このコードを実行しようとすると意図したとおりに動きません。
例外が発生し、「システムの日付を設定するためのセキュリティ アクセス許可が十分ではありません。」となります。

Windows Vista以降より導入されたUAC(ユーザーアカウント制御)で、システム時刻の変更は制限の対象となっているからです。
Visual Studioのデバッガや通常のダブルクリックによる「実行」を行うと通常のユーザーとして実行しようとするので
「管理者で実行」したり、セキュリティポリシーを変更したり、UAC自体を無効にすることで、こちらの動作は確認できます。

このUAC(ユーザーアカウント制御)はプログラムで実行しようとすると、意外に大変ですのでこちらはまた今度・・・

 - 未分類