使用VBScript英语和非英语设置用户权限

时间:2013-03-22 18:15:47

标签: vbscript localization locale custom-action cacls

有很多帖子,有人需要知道在使用VBScript安装时如何更改文件夹或文件的权限。我遇到的一个问题是,他们都没有解决过非英语情况。

这基本上是我到目前为止所拥有的。我检查语言环境是否是法语的“fr”之类的特定语言,然后假设Users组中有一个名为Utilisateurs的组。然后我调用cacls来设置我的文件夹的更改权限。这对于英语和法语非常有效,但我不确定这些组对于其他语言是什么。我目前仅限于这六个,因为我不知道其他用户组的名称是针对其他语言命名的。

我希望能够处理所有情况,但如果您有其他语言的已知用户组列表,那么这对我来说就足以解决我当前的问题了。

Dim nLocale
nLocale = objShell.RegRead("HKEY_USERS\.DEFAULT\Control Panel\International\LocaleName")
Dim nLocaleName, sUserGroup
nLocaleName = Left(nLocale, 2)
'MsgBox "[" & nLocaleName & "] = en" & InStr(1, nLocalName, "en", vbTextCompare)
if InStr(1, nLocaleName, "en", vbTextCompare) = 1 or nLocaleName="en" then
    sUserGroup="Users"
elseif InStr(1, nLocaleName, "fr", vbTextCompare) = 1 then
    sUserGroup="Utilisateurs"
elseif InStr(1, nLocaleName, "de", vbTextCompare) = 1 then
    sUserGroup="Benutzer"
elseif InStr(1, nLocaleName, "es", vbTextCompare) = 1 then
    sUserGroup="Usuarios"
elseif InStr(1, nLocaleName, "it", vbTextCompare) = 1 then
    sUserGroup="Utenti"
elseif InStr(1, nLocaleName, "pt", vbTextCompare) = 1 then
    sUserGroup="Usuários"
else
    MsgBox "To allow other users access to the AUDit Database you will need to give user permissions to " & strHomeFolder, (vbOKOnly + vbExclamation), "Notice of Permissions"
    return
end if

'Wscript.Echo "cacls """ & strHomeFolder & """ /e /c /g " & sUserGroup & ":C "

intRunError = objShell.Run("cacls """ & strHomeFolder & """ /e /c /G """ & sUserGroup & """:C ", 2, True)

当我运行它并使用Visual Studio的安装向导在自定义操作中设置它时,这是有效的。我找到了一些伪解决方案,只有在自定义操作之外执行它们才有效。它必须在我的安装的自定义操作中工作。

1 个答案:

答案 0 :(得分:1)

本地用户组有一个well-known SID,因此您可以像这样解析该组的名称:

Set wmi = GetObject("winmgmts://./root/cimv2")
sUserGroup = wmi.Get("Win32_SID.SID='S-1-5-32-545'").AccountName

作为旁注:如果可能的话,强烈建议icacls使用cacls