![Windows 在登录前创建域用户的主目录](https://linux22.com/image/700174/Windows%20%E5%9C%A8%E7%99%BB%E5%BD%95%E5%89%8D%E5%88%9B%E5%BB%BA%E5%9F%9F%E7%94%A8%E6%88%B7%E7%9A%84%E4%B8%BB%E7%9B%AE%E5%BD%95.png)
我正在尝试在用户首次登录之前预填充用户的主目录。我想通过编程来实现这一点。现在,我可以创建一个文件夹,但是当用户登录时,它会创建一个不同的文件夹,并在末尾添加域。以下是目前的情况。
@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,以及是否需要执行其他任何操作。
注意:我不想更改每台计算机的用户主目录,只想更改他们登录的计算机的主目录。
答案1
我解决这个问题的方法是,在 HKLM > SOFTWARE > Microsoft > Windows > Current Version > Run 中添加一个注册表项,该注册表项在另一个位置运行脚本。脚本的主要目的是在用户主目录中创建一个文件夹并移动一个文件。如果该文件夹已经存在,我就退出脚本。
我最初将它放在 RunOnce 中,但是它只会在任何用户第一次登录时运行,并且如果其他用户第一次登录则不会运行。