2

C# でローカル マシンの Windows タイム ゾーンをプログラムで設定するにはどうすればよいですか? リモート ユニットにはユーザー インターフェイスやユーザーがないため、対話型ツールを使用することはできません。リモート マシンは .NET 2.0 と Windows XP Embedded を実行しており、タスクの自動指示のために (Web サービス経由で) 中央サーバーと通信するローカル アプリを実行しています。特定の時間/ゾーンの組み合わせに同期するコマンドを配信できますが、変更を行うためにローカル アプリに配置できるコードは何ですか? 機器は設置前に特定の場所でイメージ化されていないため、場所を問わず機器を使用するには、この情報を同期できる必要があります。

4

6 に答える 6

3

SetTimeZoneInformationは、必要なことを行う必要があります。これを取得するには、 P/Invokeを使用する必要があります。

SE_TIME_ZONE_NAME 権限を所有して有効にする必要があることにも注意してください。

于 2008-08-28T16:34:55.950 に答える
1

これは Windows 7 では機能しません。次の環境で試しました Windows 7 VSTS-2008 手動で行っているように、[タイム ゾーンの変更] ウィンドウを開いています。

于 2010-01-13T07:57:38.050 に答える
1

santosh あなたは間違いなく正しいです。RunDLL32 shell32.dll,Control_RunDLL %SystemRoot%\system32\TIMEDATE.cpl,,/Z %1 は何年も前から廃止されており、Windows 2008、R2、Vista、7 などでは実行されません。エンターキーの認識に完全なバグがあるようです。いつかプログラマーがその問題を解決するかもしれません。

于 2010-01-29T11:42:34.343 に答える
0

一部のシステムのタイムゾーンを設定するだけでなく、Windowsタイムサービスの使用を検討する必要があります。タイムゾーンを処理するだけではありません。また、日付と時刻自体の正しい設定にも注意を払います。

ご覧ください:WindowsXPでWindowsTimeサービスと時刻を同期する方法

VistaまたはWindows7内でこれらすべての設定を行う場合でも、ここでこれを確認してください。

于 2010-01-13T08:18:45.490 に答える
0

これを試して...

まず、レジストリで、目的のゾーンを表すキーを見つける必要があります(「Central Standard Time」は一例です)。それらはここにあります:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\Time Zones

そのため、次の行を含むバッチ ファイル「SetTimeZone.bat」を作成します。

RunDLL32 shell32.dll,Control_RunDLL %SystemRoot%\system32\TIMEDATE.cpl,,/Z %1

C# から、次のように呼び出します。

System.Diagnostics.Process.Start("SetTimeZone.bat", "設定したいタイムゾーンのキー");

于 2008-08-28T16:48:38.117 に答える
0

日付の送信に UTC を使用しないと、誤ったデータが含まれるリスクがあります... デバイスのタイム ゾーンを変更すると、日付がさらにずれます。

UTC を使用してから、各タイムゾーンで時間を計算することができます。

于 2008-08-28T17:27:20.567 に答える