需要的是操作系统的真实语言版本,而不是用户界面语言或当前区域设置。
用例:软件安装需要应用安全设置和创建用户帐户。脚本必须了解某些系统属性,例如操作系统原始语言中的用户组名称。
(适用于Windows XP、Windows Server 2003、Vista等操作系统)
用例:软件安装需要应用安全设置和创建用户帐户。脚本必须了解某些系统属性,例如操作系统原始语言中的用户组名称。
(适用于Windows XP、Windows Server 2003、Vista等操作系统)
要检测操作系统语言,请使用GetSystemDefaultUILanguage。
但是,在 Windows 中查找已知组名等内容有更直接的方法。例如,要获取 Users 组的名称,请使用 WellKnownSidType = 27 (WinBuiltinUsersSid)
调用 CreateWellKnownSid ,然后调用 LookupAccountSid。还可以查询其他众所周知的用户和组的名称。
操作系统中的所有本地化名称都有一种语言中立的方式来访问它们,以供本机应用程序和设置脚本使用。管理员、用户、访客组和管理员帐户具有众所周知的安全标识符(SIDs),可以用它们代替本地化名称。另一个需要考虑的问题是,所有内置主体的默认名称都可以更改,而且通常会被善意但困惑的系统管理员更改,他们认为将域管理员帐户或组名称更改为非默认值等于增加了安全性。您甚至不能依赖这些东西是操作系统安装语言的正确名称。更糟糕的是,某些语言本地化在操作系统版本之间发生变化。因此,您需要在操作系统版本和语言的预期名称之间建立非常谨慎的映射。
相反,请找出如何为您的脚本环境构建区域设置中立的ID。
目前为止,我最好的解决方案是:枚举本地用户帐户和组,并与不同语言中已知名称的列表进行比较。