用户退出时在注册表中编辑用户个人资料

时间:2016-08-24 07:44:09

标签: c# registry

我需要在注册表中编辑Windows用户(域或本地)配置文件,例如禁用指定用户的任务管理器。

我在HKey_Users [用户SID]中执行此操作...

但是这个地址仅在用户登录时存在,并且一旦用户关闭,[SID]树被删除

如果用户未登录,我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以使用vbscript循环访问每个用户配置单元。以您需要的方式配置您自己的配置文件。导出reg密钥。替换所有实例 使用HKEY_LOCAL_MACHINE \ TempHive的reg文件中的HKEY_CURRENT_USER保存.reg文件。现在运行vbscript。多年来一直这样做。请注意,这会将更改应用于除当前登录用户之外的所有当前和未来用户(reg.exe无法加载当前正在使用的配置单元)。如果您需要它来排除某些用户,我将需要调整脚本。

On Error Resume Next

Set WshShell = WScript.CreateObject("WScript.Shell")
strWinDir = WshShell.ExpandEnvironmentStrings("%windir%")
strSystemDrive = WshShell.ExpandEnvironmentStrings("%SystemDrive%")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strSystemDrive & "\Users")

Set colSubfolders = objFolder.Subfolders
  For Each objSubfolder in colSubfolders
    WshShell.Run(strWinDir & "\System32\cmd.exe /c " & strWinDir & "\System32\reg.exe load HKLM\TempHive " & chr(34) & "C:\Users\" & objSubfolder.Name & "\NTUser.dat" & chr(34)),0, True
    WshShell.Run(strWinDir & "\regedit.exe /i /s " & strSystemDrive & "\PostInstall\PropPref.reg"),0, True
    WshShell.Run(strWinDir & "\System32\cmd.exe /c " & strWinDir & "\System32\reg.exe unload HKLM\TempHive"),0, True
  Next

WScript.Quit