3

需要的是操作系统的真实语言版本,而不是用户界面语言或当前区域设置。

用例:必须应用安全设置和用户帐户创建的软件安装。脚本必须知道某些系统属性,例如操作系统原始语言中的用户组名称。

(应该适用于 Windows XP、Windows Server 2003、Vista,...)

4

3 回答 3

4

要检测操作系统语言,请使用GetSystemDefaultUILanguage

但是,有更直接的方法可以在 Windows 中查找已知组名等内容。例如,要获取用户组的名称,请先调用CreateWellKnownSidWellKnownSidType = 27 (WinBuiltinUsersSid)然后再调用LookupAccountSid。也可以查询其他知名用户和组的名称。

于 2008-10-15T12:55:22.863 回答
1

操作系统中的所有本地化名称都有一种语言中立的方式来访问它们,以供本机应用程序和设置脚本使用。管理员、用户、来宾组和管理员帐户具有众所周知的 SID,可用于代替本地化名称。需要考虑的额外一点是,内置主体的所有默认名称都可以更改,并且通常是好意但困惑的系统管理员,他们认为将域管理员帐户或组名更改为非默认名称等于提高了安全性。即使是操作系统安装语言的正确名称,您也不能依赖这些东西。更糟糕的是,某些语言本地化会在一种语言的操作系统版本之间发生变化。因此,您需要在操作系统版本和语言的预期名称之间构建一个非常仔细的映射。

宁可不要。了解如何为您的脚本环境构建区域设置中性 ID。

于 2008-10-15T13:04:52.657 回答
0

到目前为止我最好的解决方案:枚举本地用户帐户和组,并与不同语言的已知名称列表进行比较。

于 2008-10-14T17:21:27.710 回答