我正在尝试在用户第一次登录之前预先填充用户的主目录。我想以编程方式执行此操作。现在,我可以创建一个文件夹,但是当用户登录时,它会创建一个不同的文件夹,并将域添加到末尾。这是到目前为止的内容。
@echo off
IF EXIST C:\USERS\%1 GOTO COMPLETE
GOTO FIRSTLOGON
:FIRSTLOGON
:: Create user folder on C:\
mkdir "C:\USERS\%1"
:: copy folder structure from template to new user folder
mkdir "c:\Users\%1\Desktop"
mkdir "c:\Users\%1\Documents"
mkdir "c:\Users\%1\Downloads"
mkdir "c:\Users\%1\Music"
mkdir "c:\Users\%1\Pictures"
:: Set rights on new folder
::: Remove inheritance, grant owner everything and admin everything
icacls "C:\USERS\%1" /inheritance:r /grant DOMAIN\%1:(OI)(CI)F
icacls "C:\USERS\%1" /grant %computername%\Administrator:(OI)(CI)F
GOTO END
:COMPLETE
echo Folder creation complete
:END
但是,该文件夹不会是用户的主目录。我猜我需要将带有用户 GUID 的注册表项添加到 HKLM > SOFTWARE > Microsoft > Windows NT > CurrentVersion > ProfileList,但不确定如何从用户名中获取 GUID,以及是否需要做任何其他事情。
注意:我不想更改每台计算机的用户主目录,只是他们正在登录的那个。
我为解决该问题所做的是在 HKLM > SOFTWARE > Microsoft > Windows > Current Version > Run 添加一个注册表项,该注册表项在另一个位置运行脚本。脚本的主要目的是在用户主目录中创建一个文件夹并移动一个文件。如果文件夹已经存在,我就退出了脚本。
我最初在 RunOnce 中拥有它,但是这只会在任何用户第一次登录时运行,并且如果其他用户第一次登录则不会运行。