如何检查程序是否配置为以管理员身份运行?


2

似乎有很多线程询问如何检查prorgam是否以管理员身份运行或如何设置程序以在Windows中以管理员身份运行,但我的问题是如何检查程序是否配置为以管理员身份运行它实际上在运行?我需要能够以自动方式检查这一点。

我知道我可以直接单击一个exe并检查程序是否配置为以管理员身份运行,但我需要一种方法来自动检查,因为我正在运行的应用程序需要知道某个.exe是否配置为以管理与否,并根据该属性做出决定。


UI中有两个位置用于判断可执行文件或快捷方式是否配置为以管理员身份运行。打开文件/快捷方式的属性,这两个位置是“高级”按钮和“兼容性”选项卡。在这些位置进行的设置不同,但具有相同的效果。兼容性设置将存储在注册表HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Layers中。我相信,高级标志设置为绑定到快捷方式本身的属性。
music2myear

该注册表项是完美的!谢谢!appcompatflags / layers的HKLM版本用于为所有用户设置的prorgams属性,HKCU版本仅适用于当前用户。我永远不会猜到这一点。
保罗雷斯曼

我现在将其转换为答案,但我想测试一下,看看你是否可以在命令中读取快捷方式的属性(对于Advanced> Run as Admin标志)来改进它。
music2myear

Answers:


2

标准Windows UI中有两个位置用于指示是否将可执行文件或快捷方式配置为以管理员身份运行。

打开文件/快捷方式的属性,然后...

  1. 对于快捷方式,仅单击“高级”按钮,然后查看“以管理员身份运行”标志。
  2. 对于可执行文件快捷方式,请打开“兼容性”选项卡。

这两个位置的设置具有相同的效果,但不一样。

第一个是快捷方式的属性,并绑定到快捷方式。您可以通过在网络位置的快捷方式上设置属性,然后在另一台计算机上运行快捷方式来对此进行测试。在快捷方式运行之前,系统将提示您提升。

第二个(兼容性)存储在其设置的计算机的注册表中,如果没有其他机制传播这些设置,则在一台计算机上进行的设置将无法在另一台计算机上自动显示。这些存储在注册表中的两个位置,用于每个用户或所有用户应用程序:

全部用户: HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

每用户: HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

这些可以使用首选语言中提供的标准注册表就绪组件以编程方式和脚本方式读取。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.