2013-07-12 55 views
0

嗯,我正在尋找一種方法來更改系統的默認Windows 7時間格式。 因此,如果系統使用像10PM或10AM這樣的默認時間標記,那麼我想將系統更改爲10:00或22:00。我知道如何通過GUI來做到這一點,但在我的情況下,我們的軟件(C#)必須檢查時間符號是否正確,如果它不是通過使用 C#,註冊表編輯,vbscript,commanline或Powershell或某些特定的.exe文件 我們編寫的軟件allready使用外部程序/語言(vbscript/powershell)。 但問題是迄今爲止我還沒有找到一種方法來做到這一點,然後接管遠程屏幕。更改Windows 7上的系統時間格式

也許有人知道如何做到這一點? 時區和日期符號的計數相同。

+2

不要用用戶的配置篡改。如果您的應用程序需要不同的時間格式,請在應用程序內重新格式化日期/時間值。 –

回答

1

您可以使用下面的代碼更改系統時間格式:

RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Control Panel\International", true); 
rk.SetValue("sTimeFormat", "hh:mm:ss"); // HH for 24hrs, hh for 12 hrs 

但海事組織,這不會是一個應用程序更改系統用戶的設置未經用戶同意的一個很好的做法。

+2

+1表示'這不會是一個好的做法' –

+0

謝謝我同意在正常的環境中這不會是一個明智的事情,但是在這裏它的需要,謝謝 – user613326

+0

@ user613326如果這回答你的問題,那麼請標記爲答案。否則請提供您的反饋。 –

0

關於使用「控制面板\國際」註冊表項中的解決方案(對不起,無法評論,因爲沒有50聲望):

這似乎並沒有影響到現有的過程中,只有新在更改註冊表後創建的進程。顯然,假定註冊表值(即實現細節)的代碼可能會在未來版本的Windows中破解。

此外,代碼應處理RegistryKey對象。最好用一個使用塊來寫。

關於如果你應該做到這一點,而這將是不可能的應用想改變的時間日期格式(也許一個應用程序的設置系統信息的改進方式),這將是非常合理的需要在自動化測試中做到這一點。這是代碼依賴於默認時間/日期格式的一個常見錯誤,因此將它們設置爲非默認值,或者使用各種時間/日期格式測試代碼可能是一個好主意。

0

財產方式.NET做,這是與代碼如下所示:

CultureInfo newCultureInfo = (CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone(); 
newCultureInfo.DateTimeFormat.ShortDatePattern = shortDateFormat; 
newCultureInfo.DateTimeFormat.LongTimePattern = longTimeFormat; 
Thread.CurrentThread.CurrentCulture = newCultureInfo;