c# - 通过批处理文件更改其他用户的注册表

标签 c# windows batch-file

是否可以从其他管理员帐户更改其他用户 HKCU 注册表?

我的工作流程是:

  1. 在管理员帐户上安装软件。
  2. 安装创建用户“CustomUser”
  3. 我需要为这个用户设置一些注册表项...

我可以通过命令在 ProfileList 中创建注册表项:

%windir%\System32\runas.exe /profile /user:domain\%targetUser% logonui.exe

但这不会在 HKEY_USERS 中创建目标键

我还尝试通过 C# 模拟:http://www.codeproject.com/Articles/124981/A-Complete-Impersonation-Demo-in-C-NET

但是这一行抛出异常:Boolean loadSuccess = LoadUserProfile(tokenDuplicate, ref profileInfo);

对我来说,理想的方法是仅在批处理文件中更改注册表。

最佳答案

要么预先确定“CustomUser”SID 并通过 HKU 路径访问它,将 reg.exe/add 命令直接解析到配置文件。

示例 SID

HKEY_USERS\S-1-5-21-818888881-78888889-18888888-1000

或挂载 NTUSER.DAT 并避免 SID 繁忙。

REG LOAD HKU\ZZZ "C:\Documents and Settings\CustomUser\NTUSER.DAT"
REG ADD HKU\ZZZ\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v newUserProfile /t REG_EXPAND_SZ /d "D:\setup.cmd" /f
REG UNLOAD HKU\ZZZ

编辑,这里是如何从 WMIC 找到您的 CustomUser SID。

wmic useraccount where name='CustomUser' get sid

关于c# - 通过批处理文件更改其他用户的注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20661593/

相关文章:

c# - 对 WCF 客户端进行单元测试

c# - 如何在 stream.read 中传递一个 long 作为偏移量?

c# - MiniProfiler 和 Azure 的 TTFB 下落不明

c# - 以编程方式确定 Oracle Home 安装版本?

windows - 如何在 Windows 中通过批处理文件在注册表中设置值?

c# - 文件 "obj\Debug\android\bin\packaged_resources"不存在 Xamarin.Android

windows - 如何使用来自 Microsoft-Windows-NDIS-PacketCapture 提供程序的实时 ETW 事件?

windows - 为什么我不能终止这个 while 循环?

php - 使用 Facebook Graph API 和 PHP 进行批量调用

batch-file - Windows批处理中是否有桌面文件夹的快捷方式?