首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在HKEY_LOCAL_MACHINE\Software下写入注册表

无法在HKEY_LOCAL_MACHINE\Software下写入注册表
EN

Stack Overflow用户
提问于 2011-02-09 20:58:43
回答 4查看 32.8K关注 0票数 7

我正在编写一个应用程序,它需要创建一个隐藏在登录屏幕和Control用户applet中的特殊用户帐户。通过将用户名为0的DWORD值写入下面的注册表项,我能够完成这个目标:

NT\CurrentVersion\Winlogon\SpecialAccounts\UserList

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows

问题是,在带UAC的Windows 7下,无论我尝试什么,我都不能以编程方式将值写入上面的键。

据我理解,在Windows 7上,除非您是以管理权限运行,否则在打开UAC的Windows 7上不允许写入某些密钥。我已经添加了一个应用程序清单requestedExecutionLevel level="requireAdministrator" uiAccess="false",当我的程序运行时,我接受UAC提示,我的帐户是管理员的成员,但是我仍然无法写入上面的注册表项。

我还需要做什么?在任何应用程序配置中,如何在HKEY_LOCAL_MACHINE\SOFTWARE下编写键和值?

进一步的信息..。当我的程序运行时,不会抛出错误,它似乎会写入值。我的猜测是,Windows正在虚拟化我正在编写的位置。我需要写到实际的位置,而不是虚拟的,如果我要隐藏这个特殊的用户帐户。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-09 22:02:44

可能程序在64位操作系统上作为32位程序运行?在这种情况下,我建议您搜索在Wow6432Node子键下创建的HKEY_LOCAL_MACHINE\SOFTWARE值。

您可以阅读更多关于这种虚拟化here的内容。您可以在某些API中使用KEY_WOW64_32KEY flag,以便能够在不进行虚拟化的情况下使用完全注册中心。

票数 17
EN

Stack Overflow用户

发布于 2011-07-23 15:31:48

将值写入注册表

代码语言:javascript
运行
复制
string user = Environment.UserDomainName + "\\" + Environment.UserName;

RegistrySecurity rs = new RegistrySecurity();

rs.AddAccessRule(new RegistryAccessRule(user,
    RegistryRights.WriteKey | RegistryRights.ChangePermissions,
    InheritanceFlags.None, PropagationFlags.None, AccessControlType.Deny));

RegistryKey rk = null;
try
{
  rk = Registry.CurrentUser.CreateSubKey("SOFTWARE\\TEST", 
                                   RegistryKeyPermissionCheck.Default, rs);
  rk.SetValue("NAME", "IROSH);
  rk.SetValue("FROM", "SRI LANKA");
}
票数 1
EN

Stack Overflow用户

发布于 2011-02-09 22:03:59

这可能与他们在Vista中添加的重定向有关。我会好奇您是否尝试从代码中读取注册表值,以及是否要返回所期望的值。您还可能希望启动RegMon,以查看是否可以看到重定向可能迫使您的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4950371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档