32

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

“你不应该要求提升你的申请。”
这个可以。这就是生活。

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

“BDE 已过时,您应该使用 dbExpress”
150 万行代码。'纳夫说。

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

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

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

4

7 回答 7

39

您可以通过设置一个简单的注册表项以编程方式设置“以管理员身份运行此程序”标志(您可以在 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 Vista
VISTASP1 Vista SP1
VISTASP2 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/

于 2010-04-29T17:33:13.217 回答
6

这是一个很长的镜头,但是如果您在 EXE 的名称中包含“setup”或“install”这个词,Windows 将在运行它时提示提升。不过,我不知道这是否适用于控制面板小程序。

于 2010-04-29T14:17:15.940 回答
1

您是否尝试过 Microsoft 的应用程序兼容性工具包?它会分析您的应用程序并提供可能有助于解决您的问题的兼容性填充程序。

于 2010-02-22T18:53:55.547 回答
1

使用使用“runas”作为其“动词”的 ShellExcute 的包装程序来运行您想要的程序。

于 2010-10-03T14:41:11.937 回答
1

我发现如果在下并且之前在没有文件.manifest的情况下运行了文件方法,则文件方法不起作用。Windows 会记住第一次运行的时间。这意味着当用户抱怨他们的安装没有运行时,您不能只发送清单。清单文件必须在放置..exeC:\Program files\....exe.manifest.manifest.exe.exe

Windows 重新检查.manifest是否有.exe更改(例如新版本或不同的字节数)

于 2013-10-09T06:40:48.243 回答
0

使用静默模式 + 管理员请求模式将您的应用程序打包到 WinRar SFX 中。

比弄乱 .MSI 变量要简单得多。

于 2016-09-06T01:51:13.233 回答
-1

如果这是可能的,我会感到惊讶。这将是恶意代码滥用系统的理想方式。您可能会告诉用户管理员必须安装或者他们必须具有管理员权限(就像 Windows 上的所有其他程序一样)。

于 2010-02-22T18:23:05.293 回答