![HKCU\Volatile Environment 注册表项中的环境变量的行为](https://linux22.com/image/705941/HKCU%5CVolatile%20Environment%20%E6%B3%A8%E5%86%8C%E8%A1%A8%E9%A1%B9%E4%B8%AD%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%9A%84%E8%A1%8C%E4%B8%BA.png)
我有一个 .bat 脚本,它会在每个用户登录时运行(复制 Oracle Java 异常站点)。它将文件复制到:
%userprofile%\appdata\LocalLow\Sun\Java\Deployment\security\exception.sites
不幸的是,它运行得有点太好。有时它会尝试以 LocalSystem 或其他系统帐户运行。
好的,让我们仅在域用户登录时运行此程序。我在复制文件之前搜索了进行条件检查的方法,但我发现有人暗示 %userdomain% 也会为系统帐户设置。据我所知,这意味着当 S-1-5-18(本地系统)、S-1-5-19(本地服务)和 S-1-5-20(网络服务)等 SID 运行时,它们将成为 HKCU,因此可能会(?)获取您在HKCU\动荡环境注册表项,即环境变量,例如
APPDATA
HOMEDRIVE
HOMEPATH
LOCALAPPDATA
LOGONSERVER
USERDNSDOMAIN
USERDOMAIN
USERNAME
USERPROFILE
这意味着检查 %USERDOMAIN% 毫无意义,因为系统帐户也会继承这些值。但是,我还没有找到任何官方文档(在 MSDN 或其他地方)来确认系统帐户将继承“正常”帐户所继承的部分或全部内容。
所以现在我有了原来的问题,但也非常好奇 Volatile Environment 是否真的可以用来解决问题。
- 有没有一种明显的方法来检查我忽略的真实域用户?包括真实(用户)本地帐户也可以,但不是必需的。
- 系统账户是否真的继承了我在易失性环境中为其他用户看到的所有变量?
- 附加问题:易失性环境变量从哪里生成?