没有管理员权限访问regedit
本文关键字:访问 regedit 权限 管理员 | 更新日期: 2023-09-27 18:12:17
我想知道我是否可以运行一个没有管理员权限的程序?我正试图从System32运行程序regedit。我还试过将它复制到USB上并从那里运行,两者都不起作用。有人可以帮助我运行regedit使用c#脚本?
答案:不可以,没有管理权限不能运行regedit.exe
你可以做的是,使用c#,使用预先构建的库,允许你访问注册表http://msdn.microsoft.com/en-us/library/microsoft.win32.registry.aspx
请注意,您只有对HKEY_LOCAL_USER的读/写权限,对其他所有内容只有只读权限。
您可以在没有管理权限的情况下以非管理员身份启动regedit。如果您以管理员用户身份启动它,您将获得UAC提示,但如果您以普通用户身份启动它,则不会获得提示,并且HKEY_CURRENT_USER之外的大多数内容都是只读的。
regedit.exe被标记为<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
,它并不总是要求管理员权限,只有当当前用户是管理员时。
如果您确实需要以没有admin权限的admin用户运行regedit,根据这个线程,您可以使用Compatibility Administrator工具配置您的系统以忽略requestedExecutionLevel
一个现代的regedit.exe(即Vista+ 与UAC在)有一个不幸的概念,它必须以"管理员"的身份运行-我不确定它是否在技术上是真的,它必须是一个"管理员",但这个问题是UAC和失败提升的结果。
这是一个愚蠢的人为限制,因为用户可以访问(只读)大多数注册表位置并写入HKCU。然而,除了禁用UAC,这需要管理员权限,可能是不可取的,我不知道如何绕过regedit.exe的这个限制。
- 应该可以使用reg.exe(与Windows一起分发),尽管没有一个漂亮的UI。
- 使用第三方注册表编辑器/工具,这个愚蠢的UAC海拔/限制不适用
- 可以从Windows XP中使用regedit.exe ,这不是"UAC感知"- YMMV.
- 正如sircapsalot所建议的,使用托管API -如果已经使用c#,则完美。