2

我想知道我是否可以在没有管理员权限的情况下运行程序?我正在尝试从 System32 运行程序 regedit。我也尝试将它复制到 USB 上并从那里运行它,但都没有工作。有人可以帮我使用 C# 脚本运行 regedit 吗?

4

3 回答 3

9

答:不,没有管理员权限就不能运行 regedit.exe。

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

但请注意,您只有 HKEY_LOCAL_USER 的读/写访问权限,而其他所有内容都具有只读权限。

于 2013-05-04T03:43:50.900 回答
4

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

regedit.exe 标有<requestedExecutionLevel level="highestAvailable" uiAccess="false" />,它并不总是要求管理员权限,仅当当前用户是管理员时。

如果您确实需要以没有管理员权限的管理员用户身份运行 regedit,根据此线程,您可以使用Compatibility Administrator工具将您的系统配置为忽略requestedExecutionLevel.

于 2013-05-04T07:24:46.133 回答
2

现代 regedit.exe(即带有 UAC 的Vista+ )有一个不幸的概念,即它必须“以管理员身份”运行 - 我不确定它是否在技术上是正确的,它必须是“管理员”,但这个问题是UAC的结果和失败的提升。

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

  1. 应该可以使用reg.exe(随 Windows 分发),尽管没有漂亮的 UI。
  2. 在这种愚蠢的 UAC 提升/限制不适用的情况下,使用第 3 方注册表编辑器/工具。
  3. 可能可以使用Windows XP中的 regedit.exe,它不是“UAC 感知”-YMMV。
  4. 正如 sircapsalot 所建议的,使用托管 API - 如果已经使用 C#,那就完美了。
于 2013-05-04T03:50:48.913 回答