windows - 如何以编程方式设置 "Run this program as an administrator"

标签 windows properties compatibility admin runas

我在 Vista 中遇到了 bdeadmin.exe 的问题。首先,让我们排除可预测的响应:

“您不应该要求提升您的应用程序。”
这个可以。 C'est la vie.

“您需要嵌入 list 文件。”
它已经编译过,已经有很多年了,创建它的公司无意再做一次,它是从合并模块(MSM 文件)安装的。

“BDE 已过时,您应该使用 dbExpress”
一五十万行代码。 'Nuff 说。

“在 EXE 旁边放置一个 list 文件。”
试过了,什么也没做。作为一项测试,同一个 list 文件能够使其他几个 EXE 文件需要提升,但不是我想要的那个。那里有东西阻止读取外部 list 。

“创建快捷方式并设置SLDF_RUNAS_USER。”
不能这样做,这是一个控制面板小程序。

唯一有效的方法是在“属性”窗口的“兼容性”选项卡下设置“以管理员身份运行此程序”。我不应该告诉用户这样做。对生意不利。我需要让安装程序执行此操作。 MSM 文件使用静态路径。

最佳答案

您可以通过设置一个简单的注册表项,以编程方式设置“以管理员身份运行此程序”标志(您可以在 EXE 属性的“兼容性”选项卡中找到该选项)。您需要在这些键之一下创建一个字符串值 (REG_SZ)(如果您希望设置分别针对每个用户或每个机器):

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

值的名称需要是可执行文件的完整路径(如果路径包含空格,请勿用引号将路径括起来)并且值的数据必须包含字符串 RUNASADMIN .

示例:

reg.exe Add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Program Files\MyApp\Test.exe" /d "PUT__VALUE__HERE"

兼容模式

WIN95 Windows 95
WIN98 Windows 98
WIN4SP5 Windows NT 4.0 SP5
WIN2000 Windows 2000
WINXPSP2 Windows XP SP2
WINXPSP3 Windows XP SP3
VISTARTM 远景
VISTAASP1 Vista SP1
VISTAASP2 Vista SP2
WIN7RTM Windows 7
WINSRV03SP1 Windows Server 2003 SP1
WINSRV08SP1 Windows Server 2008 SP1

权限级别

RUNASADMIN 以管理员身份运行程序

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\temp\compatmodel\iconsext.exe" /t REG_SZ /d "WINXPSP3 RUNASADMIN" /f

引用资料: http://www.verboon.info/2011/03/running-an-application-as-administrator-or-in-compatibility-mode/

关于windows - 如何以编程方式设置 "Run this program as an administrator",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2313045/

相关文章:

c - DLL 注入(inject)器不工作(64 位编译器)

c++ - 让 c 程序执行另一个程序的麻烦

internet-explorer-8 - 为什么我的网站以 IE8 兼容模式呈现?

windows - 如何在本地系统上使用 Flask 将 URL 从 “localhost” 更改为其他内容?

c - 在 socket 和 fd 之间确定

azure - 如何在 xlsx 文件中添加关系属性列

使用反射时的.net运行时类型转换

methods - F# - 调用方法并分配给构造函数中的属性

macos - Mac OS X 10.5 App "not supported on this architecture"通过复制修复?

perl - Perl 版本中有哪些向后不兼容的具体示例?