كيف يمكنني تغيير ويندوز المستخدم الإعدادات الإقليمية/التاريخ ؟

StackOverflow https://stackoverflow.com/questions/1014120

سؤال

يمكنني استخدام VB6/تطبيق COM+ الذي مخرجات قيم تاريخ/وقت على أساس التاريخ القصير الإعدادات في "لوحة التحكم" الإعدادات الإقليمية للمستخدم الذي يعمل عليه.البرنامج الذي ثم يوزع هذا الناتج شكلي تحديد تنسيق التاريخ وتتوقع و يعرض في واجهة المستخدم.

على سبيل المثالإذا الإقليمية الإعداد المستخدم هو mm/dd/yyyy ، وإخراج 06/18/2009 تطبيق تتوقع "18/06/2009" فشل مع "سلسلة لا يعتبر ساري المفعول التاريخ والوقت".

ونحن عادة تشغيل هذا التطبيق كخدمة حساب ليس لدينا تسجيل الدخول بشكل تفاعلي لإنشاء ملف تعريف ، ونحن عموما تعيين التاريخ الصحيح الشكل ثم ضع علامة على "تطبيق كافة الإعدادات إلى حساب المستخدم الحالي و ملف تعريف المستخدم الافتراضي" الخيار.

وأود أن تجعل C# الأداة المساعدة لتكوين كنت قد كتبت عن هذه الفوضى أن تكون قادرا على تعيين تنسيق التاريخ برمجيا عن مستخدم معين.

تحرير أود شيئا أكثر من أن تغيير التعليمات البرمجية ، ولكن ليس لديها القدرة على أن تفعل ذلك في هذا الوقت.

أنا أيضا أعرف أن ما أطلبه منك هو شيء سيء القيام به.فيما يتعلق "يجب أن يكون اختيار المستخدم" أنا am هذا المستخدم ، كما خلق صراحة للقيام بهذه المهمة ؛ أريد فقط أن تعيين تنسيق التاريخ قبل كتابتها طريقة, بدلا من الاضطرار إلى القيام النقر على نفسي.

هل كانت مفيدة؟

المحلول

هذا هو على وجه التحديد تثبيط من قبل Microsoft.أي حل قد يأتي مع سوف تكون قذرة هاك ربما سوف تتوقف عن العمل في وقت قريب.

التفكير في الأمر بهذه الطريقة:من أنت لتقرر هذه الإعدادات ؟ لا أعتقد أن هذا المستخدم القرار ؟

مرة أخرى على الموضوع:تجد لا لبس فيه شكل تطبيقات التواصل في مثل YYYYMMDD.التطبيق الذي يعرض يمكنك ثم ببساطة الاحترام الفعلي إعدادات المستخدم ، كما يجب.

ولكن منذ كنت لا يمكن تغييره فقط كزة في التسجيل:

المستخدم الحالي:

HKEY_CURRENT_USER\Control Panel\International

مستخدم معين:

HKEY_USERS\(user SID)\Control Panel\International

المستخدم الافتراضي:

HKEY_USERS\.DEFAULT\Control Panel\International

sShortDate هو على الأرجح القيمة التي تريد تغييرها.

نصائح أخرى

إذا كنت تسير على تعديل الملف الشخصي لتلائم الاحتياجات الخاصة بك ، لماذا لا مجرد تجاهل إعدادات ملف هاردكودي الشكل الذي تريد في التطبيق الخاص بك ؟

كود:

Imports System.Threading
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US", False)
Microsoft.Win32.Registry.SetValue("HKEY_CURRENT_USER\Control Panel\International", "sShortDate", "M/d/yyyy")

في حين بإصرار تغيير ثقافة المستخدم (الإعدادات الإقليمية) هو أن يتم بحذر ، هناك شرعية استخدام الحالات.

على ويندوز 8 و Windows Server 2012 وما فوق, Windows PowerShell يأتي مع
Set-Culture cmdlet, الذي هو برنامجي ما يعادل اختيار منطقة مختلفة عن طريق لوحة التحكم (intl.cpl).

فعلى سبيل المثال ، Set-Culture fr-CA هو ما يعادل تفاعلي اختيار المنطقة French (Canada) للمستخدم الحالي.

التحذير: مختلطة الثقافات مثل en-DE (كذا) لا يبدو للعمل من Windows PowerShell v5.1 - انظر هذا الجواب من الألغام.

في حين أنها لن تكون سريعة ، فمن الممكن استدعاء الأوامر PowerShell من C#.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top