Windows GPO软件限制策略不能与%TEMP%variables一起使用

我试图通过限制* .exe在less数几个位置的执行,特别是各种压缩工具解压到的临时文件夹,当用户可能select打开可执行文件直接从一个Zip文件。

从TechNet文章http://technet.microsoft.com/nl-nl/library/cc786941%28v=ws.10%29.aspx :

您可以在path规则中使用环境variables。 由于path规则是在客户端环境中进行评估的,因此使用环境variables(例如%Windir%)的function允许规则适应特定用户的环境。

path规则可以包含? 和*通配符,允许诸如“* .vbs”的规则匹配所有的Visual Basic脚本文件。 以下示例说明了通配符的使用:

  • “\ DC – ?? \ login $”匹配\ DC-01 \ login $,\ DC-02 \ login $
  • “* \ Windows”匹配C:\ Windows,D:\ Windows,E:\ Windows
  • “c:\ win *”匹配c:\ winnt,c:\ windows,c:\ windir

我有这些path规则(我已经应用了单一和各种组合):

  • %APPDATA%\*.exe
  • %APPDATA%\*\*.exe
  • %LOCALAPPDATA%\*.exe
  • %LOCALAPPDATA%\*\*.exe
  • %TEMP%\*.exe
  • %TEMP%\7z*\*.exe
  • %TEMP%\wz*\*.exe
  • %TEMP%\Rar*\*.exe

…理论上应该代表用户临时文件夹下的可执行文件,以及以Winzip,WinRAR和7-zip命名临时文件夹(例如%TEMP%\7zSF20.tmp\the_file.exe的方式命名的临时文件夹中的可执行文件)。

%APPDATA%%LOCALAPPDATA%工作; %TEMP%的人没有。 可执行文件似乎在%TEMP%下被阻止,但这只是因为在默认设置下,它们也与%LOCALAPPDATA%\*\*.exe规则相匹配(默认情况下Temp为AppData \ Local)。

我原本以为这是在部分文件夹名称通配符的问题,但它显示这是特定于使用%TEMP%variables(因此重写)。

我已经确认的两个解决方法(以及为什么我不想使用它们)是:

  1. 使用%LOCALAPPDATA%\Temp代替%TEMP%

    • 严格地说,这是不正确的,因为%TEMP%variables可以被设置为不同于%LOCALAPPDATA%\Temp
  2. 使用%HKEY_CURRENT_USER\Environment\TEMP%

    • 基于registry的path规则似乎适用于所有的子文件夹 – 我宁愿稍微轻一些(所以我不必白白地把所有其他东西都列入白名单)
    • 基于registry的规则似乎是有限的,你不能有任何更具体的,例如%HKEY_CURRENT_USER\Environment\TEMP%\7z*\*.exe
      • 我已经发现%HKEY_CURRENT_USER\Environment\TEMP%7z*将会closures(variables和子文件夹之间的\不应该被指定,并且之后你不能指定一个文件名掩码)
    • 这在技术上也是不正确的,因为这个registry位置只包含在进程开始时的值,而不是在该进程的过程中可能改变的值 – 例如,如果你打开一个命令提示符,发出SET TEMP=C:\并从提示符运行程序)。

(值得一提的是,我曾尝试在GPO的“计算机”和“用户”部分中独立并同时configurationSRP,以防一个人覆盖另一个,或者在计算机和用户级别解决%TEMP%问题。

%TEMP%variables的特殊之处在于它不适用于此,而%LOCALAPPDATA%\Temp\\wz*\\*.exe会有什么%LOCALAPPDATA%\Temp\\wz*\\*.exe呢?


更新:

看来这个限制是专门用%TEMP%环境variables的。 我已经编辑了这个问题。

当您在cmd.exe或command.com中检查时,程序可能会看到%TEMP%的内容不同于您。 有时候他们不一样。

但是,在软件限制策略中使用环境variables是一个坏主意,因为恶意软件可以更改variables。

我用它来阻止%TMP%和%TMP%* \的exe文件,看起来很奇怪,但是它在Win7 pro客户端上工作,启用了UAC,没有对当前用户的pipe理权限。

 %HKEY_CURRENT_USER\Environment\TEMP%*exe %TEMP%\*\*.exe 

我尝试使用%TEMP%\Rar*\*.exe并成功阻止从%TEMP%\Rar15\putty.exe%TEMP%\Rar14.tmp\putty.exe

我不认为%TEMP%可能有什么特别之处。 我再次检查,我使用的registry键path不影响%TEMP%\Rar*\*.exe