View Full Version : سوال: تغییر آیتم Current System Locale در قسمت Region از طریق کد نویسی
atf1379
شنبه 06 بهمن 1403, 12:48 عصر
با سلام
برای تغییر آیتم Current System Locale در قسمت Region از طریق کد نویسی در سایت های داخلی و خارجی خیلی جستجو کردم ولی به موردی بر نخوردم . آیا بنظر اساتید تغییر این آیتم از طریق کدنویسی امکان پذیر است ؟
با تشکر
eb_1345
شنبه 13 بهمن 1403, 05:28 صبح
با سلام
برای تغییر آیتم Current System Locale در قسمت Region از طریق کد نویسی در سایت های داخلی و خارجی خیلی جستجو کردم ولی به موردی بر نخوردم . آیا بنظر اساتید تغییر این آیتم از طریق کدنویسی امکان پذیر است ؟
با تشکر
با سلام
بنده هم قبلا جستجو کرده ام ولی موردی رو پیدا نکردم
mazoolagh
دوشنبه 15 بهمن 1403, 13:05 عصر
سلام و روز خوش
دلیلش اینه که مطلقا هیچ api پابلیک و مستند شده ای واسه این کار نیست!
فقط و فقط باید از کنترل پنل انجام بشه و اتفاقا کار درست همینه.
اگر برای نمایش پیام هست که اون راهکار دیگه ای داره.
atf1379
دوشنبه 15 بهمن 1403, 19:55 عصر
سلام و روز خوش
دلیلش اینه که مطلقا هیچ api پابلیک و مستند شده ای واسه این کار نیست!
فقط و فقط باید از کنترل پنل انجام بشه و اتفاقا کار درست همینه.
اگر برای نمایش پیام هست که اون راهکار دیگه ای داره.
سلام و عرض ادب خدمت استاد mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh)
ممنون از راهنمائی های مفیدتون
eb_1345
سه شنبه 16 بهمن 1403, 13:45 عصر
فقط و فقط باید از کنترل پنل انجام بشه و اتفاقا کار درست همینه.
اگر برای نمایش پیام هست که اون راهکار دیگه ای داره.
با سلام
در تائید فرمایش استاد mazoolagh عزیز ، بر اساس تجربه ای که حقیر دارم برای تغییر Current System Locale از طریق کنترل پنل انجام بشه خیلی بهتره
ARData
جمعه 19 بهمن 1403, 20:56 عصر
Sub ChangeSystemLocaleToPersian()
Dim regPath As String
Dim shell As Object
' مسیر رجیستری برای تغییر locale
regPath = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Nls\Locale"
' ایجاد شیء Shell
Set shell = CreateObject("WScript.Shell")
' تغییر مقدار Locale به 00000429 (فارسی)
shell.RegWrite regPath & "Locale", "00000429", "REG_SZ"
' تغییر مقادیر ACP، MACCP و OEMCP به 1256 (کد صفحهی فارسی)
regPath = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Nls\CodePage"
shell.RegWrite regPath & "ACP", "1256", "REG_SZ"
shell.RegWrite regPath & "MACCP", "1256", "REG_SZ"
shell.RegWrite regPath & "OEMCP", "1256", "REG_SZ"
MsgBox "Current System Locale has been changed to Persian (فارسی). Please restart your computer."
End Sub
atf1379
شنبه 20 بهمن 1403, 12:34 عصر
با سلام
در تائید فرمایش استاد mazoolagh عزیز ، بر اساس تجربه ای که حقیر دارم برای تغییر Current System Locale از طریق کنترل پنل انجام بشه خیلی بهتره
با سلام متقابل
سپاسگزارم
atf1379
شنبه 20 بهمن 1403, 12:36 عصر
Sub ChangeSystemLocaleToPersian()
Dim regPath As String
Dim shell As Object
' مسیر رجیستری برای تغییر locale
regPath = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Nls\Locale"
' ایجاد شیء Shell
Set shell = CreateObject("WScript.Shell")
' تغییر مقدار Locale به 00000429 (فارسی)
shell.RegWrite regPath & "Locale", "00000429", "REG_SZ"
' تغییر مقادیر ACP، MACCP و OEMCP به 1256 (کد صفحهی فارسی)
regPath = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Nls\CodePage"
shell.RegWrite regPath & "ACP", "1256", "REG_SZ"
shell.RegWrite regPath & "MACCP", "1256", "REG_SZ"
shell.RegWrite regPath & "OEMCP", "1256", "REG_SZ"
MsgBox "Current System Locale has been changed to Persian (فارسی). Please restart your computer."
End Sub
بر روی سیستم من خطای زیر صادر میشود:
mazoolagh
شنبه 20 بهمن 1403, 14:02 عصر
این کدی رو که هوش ساختگی پیشنهاد داده (پست شماره 6)
اینجا در تگ مناسب میذارم که دست کم خوانا باشه (بگذریم که کد ایراد آشکار داره!)
Sub ChangeSystemLocaleToPersian()
Dim regPath As String
Dim shell As Object
' مسیر رجیستری برای تغییر locale
regPath = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contr ol\Nls\Locale"
' ایجاد شیء Shell
Set shell = CreateObject("WScript.Shell")
' تغییر مقدار Locale به 00000429 (فارسی)
shell.RegWrite regPath & "Locale", "00000429", "REG_SZ"
' تغییر مقادیر ACP، MACCP و OEMCP به 1256 (کد صفحهی فارسی)
regPath = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contr ol\Nls\CodePage"
shell.RegWrite regPath & "ACP", "1256", "REG_SZ"
shell.RegWrite regPath & "MACCP", "1256", "REG_SZ"
shell.RegWrite regPath & "OEMCP", "1256", "REG_SZ"
MsgBox "Current System Locale has been changed to Persian (فارسی). Please restart your computer."
End Sub
بر روی سیستم من خطای زیر صادر میشود:
1- این کد ایراد داره
2- بعد از رفع ایراد هم گارانتی این که در همه شرایط کار کنه نیست
3- از همه اینها، و بفرض درست بودن همه چیز، باز هم کاربر باید ریستارت کنه،
یعنی عملا بی ارزشه (منظور فقط این نیست - هر کدی)
4- اینکه برای یک کار ساده که خنگ ترین کاربر هم میتونه در یک دقیقه انجام بده،
بیاییم در رجیستری و اون هم یک جای حساس دستکاری کنیم (حالا انجام درستش بماند)
کلا کار نادرستیه - اگر منطقی بود مایکروسافت خودش api مناسب مستند شده میداد.
5- ایراد دیگه کدهای اینجوری (هوش ساختگی) اینه که نه اعتباری به درست بودنشون هست،
نه این که تست شدن (همه شرایط)،
نه این که اگر مشکلی داشته باشه میتونین بپرسین!
ARData
یک شنبه 21 بهمن 1403, 20:31 عصر
اگه ویندوز شما 7 هست اینو امتحان کنید دیگه آخرین راهه :
Private Sub Command1_Click()
Dim WshShell As Object
Dim Command As String
Command = "control.exe intl.cpl,,3"
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run Command, 1, True
SendKeys "{TAB}"
SendKeys "{TAB}"
SendKeys "{Enter}"
SendKeys "{P}"
SendKeys "{Enter}"
SendKeys "{ESC}"
SendKeys "%{F4}"
End Sub
اگه روی ویندوز های دیگه کار نکرد اعلام کنید
mazoolagh
سه شنبه 23 بهمن 1403, 17:03 عصر
خب،
با این حساب تکلیف کد پست شماره 6 مشخص شد.
اما این پست شماره 10:
یکم این که کد نیست و کدنما است!
دویم این که بسیار hacky و unstable و شکننده است!
سیم این که بستگی به security policy داره (خیلی جاها که ادمین درست و حسابی داره دسترسی کاربر به خیلی چیزا بسته یا محدوده)
ARData
سه شنبه 23 بهمن 1403, 18:49 عصر
برای اینکه بخواهیم موقتا اختیارات کاربر را از نوع administrator کنیم و پس از اعمال تغییرات آن را به حالت قبلی برگردانیم نیاز هست از یک اسکریپت استفاده کنیم
Option Explicit
Public Sub RunPowerShellScript()
Dim strScriptPath As String
Dim strCommand As String
Dim shell As Object
' مسیر کامل به اسکریپت PowerShell
strScriptPath = "C:\Path\To\TemporaryAdmin.ps1"
' دستور PowerShell برای اجرای اسکریپت
strCommand = "powershell.exe -ExecutionPolicy Bypass -File """ & strScriptPath & """"
' ایجاد شیء Shell برای اجرای دستور
Set shell = CreateObject("WScript.Shell")
shell.Run strCommand, 1, True
' پیام موفقیت
MsgBox "PowerShell script executed successfully!", vbInformation
End Sub
این کد بدون استفاده از sendkeys System Locate را به Persian بر می گرداند فقط کافی فایل ضمیمه را از حالت زیپ دربیارید و در درایو مثلا c کپیش کنید .
atf1379
سه شنبه 23 بهمن 1403, 19:14 عصر
این کد بدون استفاده از sendkeys System Locate را به Persian بر می گرداند فقط کافی فایل ضمیمه را از حالت زیپ دربیارید و در درایو مثلا c کپیش کنید .
فایل رو از حالت زیپ خارج و در درایو C کپی کردم ولی غیر از باز شدن فایل و نمایش کدها اتفاق خاص دیگری نیفتاد .
ARData
چهارشنبه 24 بهمن 1403, 19:24 عصر
یکم یه کوچولو تلاش میکردی به نتیجه می رسیدی !!! واقعا متاسفم
atf1379
چهارشنبه 24 بهمن 1403, 20:40 عصر
یکم یه کوچولو تلاش میکردی به نتیجه می رسیدی !!! واقعا متاسفم
بیشتر از ی کوچولو تلاش شد !
بعد از خارج کردن فایل از حالت زیپ اون رو در درایو C کپی کردم
با راست کلیک بر روی فایل مطابق تصویر زیر سه گزینه در ابتدای منوی شناور نمایش داده میشود :
156416
نتیجه انتخاب گزینه اول ، دوم و سوم مطابق تصاویر ضمیمه:
در حالت دوم با درج حرف Y و بعد ENTER باید در کنترل پنل زبان به فارسی تبدیل میشد که تغییر حاصل نشد حتی بعد از ریستارت کردن کامپیوتر
در واقع علت عدم تغییر در تصویر شماره 3 بصورت سیستمی توضیح داده شده
ARData
جمعه 26 بهمن 1403, 11:49 صبح
بیشتر از ی کوچولو تلاش شد !
بعد از خارج کردن فایل از حالت زیپ اون رو در درایو C کپی کردم
با راست کلیک بر روی فایل مطابق تصویر زیر سه گزینه در ابتدای منوی شناور نمایش داده میشود :
156416
نتیجه انتخاب گزینه اول ، دوم و سوم مطابق تصاویر ضمیمه:
در حالت دوم با درج حرف Y و بعد ENTER باید در کنترل پنل زبان به فارسی تبدیل میشد که تغییر حاصل نشد حتی بعد از ریستارت کردن کامپیوتر
در واقع علت عدم تغییر در تصویر شماره 3 بصورت سیستمی توضیح داده شده
قرار نیست از این فایل استفاده مستقیم بشه
شما کافیه از این کد در اکسس استفاده کنید :
Option Explicit
Public Sub RunPowerShellScript()
Dim strScriptPath As String
Dim strCommand As String
Dim shell As Object
' مسیر کامل به اسکریپت PowerShell
strScriptPath = "C:\Path\To\TemporaryAdmin.ps1"
' دستور PowerShell برای اجرای اسکریپت
strCommand = "powershell.exe -ExecutionPolicy Bypass -File """ & strScriptPath & """"
' ایجاد شیء Shell برای اجرای دستور
Set shell = CreateObject("WScript.Shell")
shell.Run strCommand, 1, True
' پیام موفقیت
MsgBox "PowerShell script executed successfully!", vbInformation
End Sub
atf1379
جمعه 26 بهمن 1403, 12:41 عصر
قرار نیست از این فایل استفاده مستقیم بشه
شما کافیه از این کد در اکسس استفاده کنید :
در کل هیچ فرقی نمیکنه کدهای فوق باعث تغییر Current System Locale در قسمت Region نمیشه( چه مستقیم چه غیر مستقیم)
شاید هم بخاطر اینکه ویندوز سیستم بنده ویندوز 10 میباشه این تغییر صورت نمی گیره
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.