在没有管理员权限的情况下访问regedit

时间:2013-05-04 03:35:52

标签: c#

我想知道我是否可以运行没有管理员权限的程序? 我试图从System32运行程序regedit。 我也尝试将其复制到USB上并从那里运行,两者都没有用。 有人可以帮我用C#脚本运行regedit吗?

3 个答案:

答案 0 :(得分:8)

答案:不,如果没有管理员权限,就无法运行regedit.exe。

您可以做的是使用C#,使用允许您访问注册表的预构建库 http://msdn.microsoft.com/en-us/library/microsoft.win32.registry.aspx

请注意,您只对HKEY_LOCAL_USER具有读/写权限,对其他所有内容只有READONLY。

答案 1 :(得分:2)

一个现代的regedit.exe(即Vista + with UAC on )有一个不幸的想法,它必须“作为管理员”运行 - 我不确定它是否必须在技术上是正确的“管理员”,但this issue is a result of UAC并且海拔失败。

这是一个愚蠢的人为限制,因为用户可以访问(只读)大多数注册表位置并写入HKCU 。但是,除了禁用需要管理员权限并且可能不可取的UAC之外,我不知道如何绕过对regedit.exe的这种限制。

  1. 应该可以使用reg.exe(随Windows一起发布),虽然没有很好的用户界面。
  2. 使用第三方注册表编辑器/工具,此类愚蠢的UAC提升/限制不适用。
  3. 可以使用Windows XP中的regedit.exe ,而不是“UAC感知” - YMMV。
  4. 正如sircapsalot所建议的那样,使用托管API - 如果已经使用C#则完美。

答案 2 :(得分:2)

通过以非管理员身份启动regedit,您可以在没有管理权限的情况下运行regedit。如果以管理员用户身份启动它,则会收到UAC提示,但如果以普通用户身份启动,则不会得到提示,并且HKEY_CURRENT_USER以外的大多数内容都是只读的。

regedit.exe标有<requestedExecutionLevel level="highestAvailable" uiAccess="false" />,只有当前用户是管理员时才会要求管理员权限。

如果您真的需要以没有管理员权限的管理员用户身份运行regedit,根据this thread,您可以使用Compatibility Administrator工具将系统配置为忽略requestedExecutionLevel。< / p>