0

VBScriptを使用してインストールするときに、フォルダーまたはファイルのアクセス許可を変更する方法を誰かが知る必要がある投稿が多数あります。私が抱えている問題の1つは、英語以外の状況でそれを解決していないということです。

これは基本的に私がこれまでに持っているものです。ロケールがフランス語の「fr」のような特定の言語であるかどうかを確認し、UsersグループにUtilisateursというグループがあると想定します。次に、caclsを呼び出して、フォルダーに変更権限を設定します。これは英語とフランス語で非常にうまく機能しますが、他の言語のグループが何であるかはわかりません。他のユーザーグループが他の言語でどのように命名されているかわからないため、現在、これらの6つだけに制限されています。

すべてのケースに対応できるようにしたいと思いますが、他の言語の既知のユーザーグループのリストがある場合は、現在の問題を解決するのに十分です。

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)

これは、実行したとき、およびVisualStudioのセットアップウィザードを使用してカスタムアクションで設定したときに機能します。カスタムアクションの外部で実行した場合にのみ機能する疑似ソリューションをいくつか見つけました。インストールのカスタムアクションで機能する必要があります。

4

1 に答える 1

1

ローカルユーザーグループには既知のSIDがあるため、次のようにグループの名前を解決できます。

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

補足として:可能であれば、オーバーを使用することを強くお勧めします。icaclscacls

于 2013-03-22T19:35:43.800 に答える