VB脚本区域设置

时间:2012-03-19 12:24:08

标签: vbscript regional-settings

是否可以通过VB脚本为进程设置区域设置?

Dim oEnv: Set oEnv = WshShell.Environment("PROCESS")
oEnv.Item("NLS_LANG") = "AMERICAN_AMERICA.WE8MSWIN1252"

这是我得到的一点代码。不确定它是如何工作的?我想将我的应用程序的标准和格式专门设置为来自英国的美国。

由于  NISHANT

2 个答案:

答案 0 :(得分:0)

您的计算机使用环境变量来记住应用程序的某些内部设置。您可以通过按Windows键(标记)+暂停/中断,选择高级选项卡,按下环境变量按钮并查看系统变量部分来查看它们。

使用WshShell.Environment对象,您可以读取和写入这些变量:

Option Explicit
dim wshshell, EnvVar
set WshShell = WScript.CreateObject("WScript.Shell")

Dim oEnv: Set oEnv = WshShell.Environment("PROCESS") 

' This shows you all environment variables in your system:    
For each EnvVar in oEnv
    msgbox EnvVar
Next

' This shows you a particular environment variable:
msgbox oEnv.item("OS")

' And this sets a particular environment variable:
oEnv.Item("NLS_LANG") = "AMERICAN_AMERICA.WE8MSWIN1252"  

NLS_LANG是Oracle使用的设置,用于设置文化设置。通过将其设置为AMERICAN_AMERICA.WE8MSWIN1252,您可以告诉Oracle实现您希望在特定系统上使用哪种文化(请记住,环境变量是每台PC)。您可以找到有关on the net的更多信息。

答案 1 :(得分:0)

这需要在注册表中设置。您使用的注册表路径因您使用的版本而异。

对于Oracle版本7:

HKEY_LOCAL_MACHINE \ SOFTWARE \ ORACLE

Const HKEY_LOCAL_MACHINE = &H80000002

strKeyPath = "SOFTWARE\ORACLE"
strValueName = "NLS_LANG"
strValue = "AMERICAN_AMERICA.WE8MSWIN1252"

strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
objRegistry.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strValue

对于Oracle数据库版本8,8i和9i:

HKEY_LOCAL_MACHINE \ SOFTWARE \ ORACLE \ HOMEX \ 其中“x”是标识Oracle主目录的唯一编号。 HOME0是第一次安装

Const HKEY_LOCAL_MACHINE = &H80000002

strKeyPath = "SOFTWARE\ORACLE\HOMEx"
strValueName = "NLS_LANG"
strValue = "AMERICAN_AMERICA.WE8MSWIN1252"

strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
objRegistry.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strValue

对于Oracle数据库10g:

HKEY_LOCAL_MACHINE \ SOFTWARE \ ORACLE \ KEY _

Const HKEY_LOCAL_MACHINE = &H80000002

strKeyPath = "SOFTWARE\ORACLE\KEY_<oracle_home_name>"
strValueName = "NLS_LANG"
strValue = "AMERICAN_AMERICA.WE8MSWIN1252"

strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
objRegistry.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strValue