问题标签 [registrykey]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
873 浏览

.net - .NET RegistrySecurity API 处理非规范 ACL:处理方法

我正在尝试将访问规则添加到RegistryKey这样的:

但是,如果注册表被破坏,则会AddAccessRule引发异常(Reflector 显示该GetAccessControl调用预先确定它们不是规范的,并且当您在RegistrySecurity实例处于该状态时尝试执行写入时,您会触发故障安全):

运行regedt32(可能还有regedit)然后显示一个弹出窗口the permissions on <key> are incorrectly ordered, which may cause some entries to be ineffective <paraphrasing>Do you want to unmangle them now? Y/N</paraprasing>

我在这个问题上看到的最权威的文章是http://www.codeproject.com/KB/system/accessctrl3.aspx,它说:

但是,控制标志是作为属性实现的(谈论不一致!)。AreAccessRulesProtected您可以从/检索自动继承设置AreAuditRulesProtected(回想一下,如果 ACL 受保护,它不会自动继承)。如果您阅读第 2 部分,您会知道某些 Windows API 不支持继承,因此可能会破坏您机器的继承设置。好消息是 .NET 完全支持继承机制并将正确保留继承设置。如果您打开的安全描述符以某种方式获得了混乱的 ACL(可能来自某些流氓 Win32 应用程序),如果您尝试对其进行编辑,则会引发 InvalidOperationException。

通常,此类非规范 ACL 是使用 [sinceretired] NewSID 工具产生的,人们写知识库文章说“那就别再那样做了”

但是,至关重要的是,这并不总是原因,有时代码只需要工作。有什么好的干净安全的方法来处理这个?

我将提供两个答案,人们可​​以投票和挑选漏洞、投票、评论和挑剔。

0 投票
2 回答
2004 浏览

visual-studio-2008 - 删除注册表项,在 Windows 7 中使用 Visual Studio 2008 安装和部署项目

我在 Visual Studio 2008 Professional 中创建了一个安装和部署项目。我正在使用 Visual C++,其中我有两个在自定义操作下运行的 exe 文件。一个在提交中运行,另一个在卸载中运行。目的是在安装时添加注册表项并在卸载时将其删除。它在 Windows XP 上完美运行,但是当我更改为 Windows 7 并运行设置时,只有添加键的部分有效。卸载时不会删除密钥。但是,当我从安装程序中取出卸载 exe 文件并在 Windows 7 上单独运行时(不是通过安装程序,只需双击 exe),它就会完美地删除注册表项。知道问题是什么吗?

0 投票
1 回答
962 浏览

permissions - Win Server 2008 上的 UAC 让我头疼!

我的安装程序部署了一个配置 exe,用于在也安装的 Windows 服务上进行一些基本配置。该exe还需要创建和编写一些注册表项。在 Windows server 2008 环境中,无法创建这些密钥。我调查并发现这是一个管理员权限,并且 exe 没有提示输入 2008 年 UAC 下所需的管理员权限。我可以通过右键单击 exe 并以管理员身份运行来解决此问题。这并不理想,但是因为它是我需要通知我们的客户执行的额外步骤。运行exe时还有其他方法可以提升管理员权限吗?

0 投票
1 回答
665 浏览

c# - 使用 RegistryKey、RegistrySecurity 和 RegistryAccessRule 修复 Windows XP 上的错误注册表设置

我正在编写一个 C# 应用程序,它将修复整个组织中损坏的注册表项。我正在尝试使用 RegistryKey、RegistrySecurity 和 RegistryAccessRule 这三个类,当我尝试使用它们时,我得到一个“不允许请求的注册表访问。”。我对此进行了广泛的搜索,但找不到好的解决方案。

我正在尝试修复的密钥,对它们没有权限(请参见下面的屏幕截图)。它们是空白的并且没有可继承的设置。这不允许我使用我的应用程序修复它们,因为我没有权限,但我可以使用运行此应用程序的用户更改权限,就像我打开 regedit 一样。所以我知道我可以通过手动方式向这个用户添加对损坏机器的权限,但由于某种原因,我的应用程序无论我多么努力地告诉它提升自己都无法获得权限。

我尝试过的事情:

  1. 在 Windows 7 上,当您使用 UAC 运行应用程序时,它可以工作,右键单击以管理员身份运行。我想复制能够在 Windows XP 上使用相同的代码执行此操作。
  2. 我使用“highestAvailable”级别创建了一个清单,并尝试了“requireAdministrator”。
  3. 我也尝试过使用“System.Security.Permissions.RegistryPermission”断言,这显然也会带来更高级别的运行权限。
  4. 我没有从网络共享运行它,尽管我已经尝试了本地和网络来查看它将从哪个安全区域运行。

您可以看到权限如下所示:http: //i.stack.imgur.com/0c99s.jpg

任何帮助表示赞赏!

0 投票
4 回答
8674 浏览

windows - 如何刷新注册表值

我正在卸载一些应用程序并从注册表中读取软件安装枚举值。

问题是卸载后它不会更改注册表值,除非屏幕或注册表未刷新。只有刷新后我才得到正确的值。

有人可以帮我刷新python代码中的regedit吗?

问候, 颠倒

0 投票
2 回答
1549 浏览

windows - 神秘的本机“A”注册表项,路径为:Registry\A

我最近为 Windows 编写了一个本地 NT 注册表编辑器,并在 Windows 7 上运行它。令我惊讶的是,除了 Windows XP 上存在的两个标准根密钥 MACHINE 和 USER 之外,还有一个名为“ A",不能以任何方式打开,无论是通过权限更改还是备份权限或其他方式:

快照

有谁知道这把钥匙是干什么用的?我不相信它适用于任何软件,因为它在我在机器上安装任何东西之前就已经存在,而且我相信我在另一个全新安装中也看到了它。它非常可疑,我很好奇它为什么在那里。(如果我足够好奇,我可能最终会编写一个驱动程序来打开它而无需进行权限检查,看看会发生什么!)

(我不确定是否将它放在 SuperUser 或 StackOverflow 上,因为我认为它可以放在任何一个中。不过,我可能是错的;如果这不是合适的地方,抱歉。)

编辑:

如果忘了说,我不相信你甚至可以使用 Win32 API 看到这个密钥,就像RegOpenKey- 你必须使用原生 APINtEnumerateKey来代替。

0 投票
1 回答
198 浏览

c# - 在为 C# windows 应用程序创建设置项目时,如何以及为什么将已安装产品的详细信息添加到系统注册表?

我已将 setUp 项目添加到我的 C# windows 应用程序中。但没有在系统注册表中注册它。我突然意识到要在系统注册表中注册它必须遵循以下程序:我用以下代码覆盖了“安装”方法:

类似地将以下代码添加到重写的 Unistall 方法。

是否可以将上述代码片段添加到安装和卸载方法。因为,注册表操作可能会导致系统崩溃,所以我没有这样做。

有人可以让我知道使用系统注册表注册安装的确切过程。
安装时注册还有什么好处。

我在编码时对注册表操作完全陌生。我想更详细地了解注册表、registry_key、GUID、ClassId 和其他与注册表操作相关的重要细节的含义的基础知识。任何人都可以为此建议我一些材料。 提前致谢。

0 投票
2 回答
516 浏览

c# - 希望从基础学习注册表操作,其概念

我对注册表操作和注册表编程完全陌生。我想从基础开始学习注册表概念,例如 Class_Id、GUID、注册表项、GAC 的含义、如何操作这些、如何使用 regedit 等。
我只是听说过这些与注册表相关的关键字,但不知道这些究竟是什么。
如果一个人能够很好地掌握注册表操作及其概念,那么可以在编码中完成奇迹。请任何人都可以用一些材料(链接)指导我,以便我可以从基础学习这些注册表概念。

我在 .NET 平台上编码。

提前致谢。

0 投票
1 回答
1537 浏览

c# - 如何在 .NET 中检查诸如 ReadKey 或 FullControl 之类的 RegistryKey 权限?

我想检查我是否对 RegistryKey 具有权限,例如我可以读取值和写入值。本博客列举权限

http://blogs.msdn.com/b/bclteam/archive/2006/01/06/509867.aspx

我怎样才能从 GetAccessControl() 到知道我拥有例如 FullControl?

0 投票
3 回答
199 浏览

c# - 从注册表中获取值(在右侧窗格中)

我正在尝试从 Windows 中的注册表中获取一个值,该注册表位于几个分支下:

给定以下代码:

其中 settings 设置为 LocalMachine in Microsoft.Win32.Registry

但是,在第一行代码之后我会得到 null 。是什么赋予了?