2010-08-04 13:49:40 +0000 2010-08-04 13:49:40 +0000
128
128
Advertisement

强制程序在没有管理员权限或UAC的情况下运行?

Advertisement

有什么方法可以让一个通常需要管理员权限(通过UAC)的程序在没有管理员权限的情况下运行吗?(即:没有UAC提示符和**系统范围内的访问*。)

添加:不修改可执行程序本身。通过修改可执行文件,我可以从清单中删除trustInfo条目(或者完全删除清单,这样我就可以使用外部的清单),让程序在没有UAC的情况下启动。不幸的是,这修改了可执行程序,所以它很快就会因为内部校验和测试而退出。通过使用进程资源管理器,我可以以有限用户的身份启动它。但是这似乎比我想的要多得多(它运行起来就像保护模式的IE一样,所以比我的标准非升级用户的访问量要少得多)。

Advertisement
Advertisement

答案 (9)

76
76
76
2012-07-18 15:20:44 +0000
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Run without privilege elevation"

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

将此文本保存在<name_of_file>.reg中,并将其添加到Windows注册表中。(双击它应该就可以了。)

之后,右击你想在没有管理权限的情况下运行的程序,选择 “无权限提升运行"。

57
57
57
2015-10-02 11:27:02 +0000

保存到nonadmin.bat

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

现在你可以拖放程序到这里来运行程序,不需要管理员的权限。

基于 Vom 的 答案


更新:现在应该也可以用在有空格的程序上了。

35
Advertisement
35
35
2012-01-05 08:15:03 +0000
Advertisement

我希望我没有太晚,但我一直在寻找类似的问题,在这里没有看到答案的情况下,我发现Windows内置的RunAscommand,当以管理员身份运行时,可以用/trustlevel开关来实现。讽刺的是,在没有提升的情况下启动一个程序需要一个提升的命令提示符。去想办法吧。) 我希望对你有帮助。

19
19
19
2016-09-09 20:16:13 +0000

如果你有一个特定的应用程序,希望在没有UAC的情况下始终运行,你可以用注册表(将文本添加到REG文件中并导入到注册表中):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\example\application.exe"="RunAsInvoker"

[与本答案不同的是,这个方案不需要交替点击,也不需要改变用户交互。

微软称这个过程为添加RunAsInvoker “兼容性 Shim”.aspx)。

4
Advertisement
4
4
2019-01-25 11:54:23 +0000
Advertisement

如果它是一个需要管理权限的设置(安装)文件exe,有一个不需要高阶访问的技巧:

如果文件的名称中包含像setupinstall这样的字样,即使它不需要高阶访问,windows也会强行以高阶访问的方式运行它:

如果.exe文件中包含了清单,那么这些高阶访问的启发式方法就不适用。 例如,如果文件中包含了一个 manifest,那么这些关于 elevation 的启发式方法就不适用。

例如,如果 manifest 显示 exe 不需要 elevation,即使在文件名中包含这些词,也不会使它作为 elevation 运行。

这在UAC(用户账户控制)文档中有记载:

安装程序检测会检测到设置文件,这有助于防止在用户不知情的情况下运行安装程序。

3
3
3
2011-05-18 01:05:06 +0000

我今天用MS应用程序自定义工具包解决了这个问题。

我按照说明在Tech republic的一篇文章中.

2
Advertisement
2
2
2013-07-21 02:56:41 +0000
Advertisement

虽然Andrew在他的问题中说,下面的方法并不奏效:

通过修改可执行文件,我可以从manifest中删除trustInfo条目(或者完全删除manifest,这样我就可以使用外部的manifest),让程序在没有UAC的情况下启动。不幸的是,这修改了可执行文件,所以它很快就会因为内部校验和测试而退出。

我修改了一个外部的.manifest文件,将

<ms_asmv2:requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

改为 <ms_asmv2:requestedExecutionLevel level="asInvoker" uiAccess="false" />

,结果发现我使用的软件并不需要管理员权限,所以我可以在没有UAC或管理员密码的情况下,在标准用户账户上运行。谢谢你!

-2
-2
-2
2012-04-20 04:28:43 +0000

我通过改变包含程序的文件夹上的权限来解决这个问题。

我添加了每个将运行该程序的用户,并给他们 “完全控制 "权限。这就解决了这个问题,而且我没有勾选 "以管理员身份运行"。

我对运行程序的用户没有任何安全问题。

-5
Advertisement
-5
-5
2010-08-04 14:09:46 +0000
Advertisement

不,如果一个程序需要UAC,那么它正在尝试访问其沙盒之外的东西。

如果你只是想摆脱通知,你可以禁用UAC。开始,键入 “用户"。点击 "用户账户"。在弹出的窗口中,点击 "用户账户控制设置",然后关闭UAC。

在Windows 7上禁用UAC:开始,键入 "用户"。点击 "用户账户控制设置"。将选择栏一直拖到底部的 "永不通知"。

Advertisement

相关问题

3
19
10
28
2
Advertisement
Advertisement