某些应用程序意外地在大约500台PC上的“所有用户/应用程序数据文件夹”中更改了权限 – 如何将其还原到Windows默认值?

在testing期间,客户安装了我们的一些软件,这些软件意外地在大约500台计算机上修改了All Users/Application Data文件夹的权限。 他们使用Altiris部署软件。 权限已经改变,并开始导致应用程序,如想要写入数据到该文件夹​​的防病毒软件的问题。

权限更改不是recursion的。 作为testing,我们创build了一个软件版本,他们可以作为一个补丁,使“所有人”用户完全控制。 这解决了防病毒软件的问题,但现在权限是不安全的。

在我的MSI工具创build器(高级安装程序)中,我可以非常接近地复制默认的窗口设置,但是下面的绿色箭头指示的条目除外。

替代文字http://www.blakerobertson.com/storage/perm/ApplyOnlyToFolders.png

来自系统的任何build议pipe理员将如何去重置权限? 客户可以使用Altirispipe理软件来执行某种function,如果有人知道的话。

尝试xcacls.vbshttp://support.microsoft.com/kb/825751 )。 它是一个免费的Microsoft VBScript命令行实用程序,与cacls命令类似,但具有更多选项。 它能够应用比cacls更多的细粒度权限,但仔细阅读指令(通过键入没有任何选项的命令显示:cscript xcacls.vbs); 他们相当复杂! 它具有将权限仅应用于“此文件夹和子文件夹”的function; 我以前用它来做到这一点。

如果您正在运行Windows Vista或更高版本,则包含的icacls实用程序( http://technet.microsoft.com/en-us/library/cc753525(WS.10).aspx )可能更合适。

一旦制作了正确的命令(使用任一工具),将其放入一个* .cmd脚本,然后将该脚本添加到组策略对象,以便通过组策略将其应用到机器。 请注意,如果您使用该路线,则还必须以某种方式将xcacls.vbs加载到每台机器上。 这可以通过包含一个命令来从文件共享中下载xcacls.vbs脚本,并将其保存在与您的权限设置命令所在的相同的* .cmd脚本本地保存(也可以尝试直接从文件共享)。

您可以很容易地使用GPO来纠正这个问题。

如果他们想要使用Altiris,请设置一个作业以使用cacls.exe来重置文件夹上的权限。

这是根据Jay Michaud的build议产生的代码。

我结束了向我的安装程序添加一个自定义操作。 在文件被复制后运行。 如果你这样做,你会想要下面的代码,你会想作为参数pipe道:APPDIR | CommonAppDataFolder。 (是的,这是一个pipe道分隔他们)

 dim XCACLS_EXEC, APPDATAFOLDER, WindowStyle ' COMMENT OUT THIS SECTION IF NOT RUNNING AS AN INSTALLER CUSTOM ACTION, ' SET XCACLS_EXEC and APPDATAFOLDER variables some other way. actdata = Session.Property("CustomActionData") tokens = Split( actdata, "|", -1) XCACLS_EXEC = tokens(0) & "XCACLS.vbs" APPDATAFOLDER = tokens(1) WindowStyle=0 '0 for hide, 1 for show. set objShell = CreateObject("WScript.Shell") 'MsgBox XCACLS_EXEC & " " & APPDATAFOLDER & " " & Session.Property("CustomActionData") objShell.Run "cscript """ & XCACLS_EXEC & """ """ & APPDATAFOLDER & """ /SPEC C /G users:W", WindowStyle, True objShell.Run "cscript """ & XCACLS_EXEC & """ """ & APPDATAFOLDER & """ /E /G users:X", WindowStyle, True objShell.Run "cscript """ & XCACLS_EXEC & """ """ & APPDATAFOLDER & """ /E /G ""Power Users"":M", WindowStyle, True objShell.Run "cscript """ & XCACLS_EXEC & """ """ & APPDATAFOLDER & """ /E /G ""CREATOR OWNER"":F", WindowStyle, True objShell.Run "cscript """ & XCACLS_EXEC & """ """ & APPDATAFOLDER & """ /E /G Administrators:F", WindowStyle, True objShell.Run "cscript """ & XCACLS_EXEC & """ """ & APPDATAFOLDER & """ /E /G Administrator:F", WindowStyle, True objShell.Run "cscript """ & XCACLS_EXEC & """ """ & APPDATAFOLDER & """ /E /G SYSTEM:F", WindowStyle, True