我有一个Windows控制台应用程序,用C ++编写并使用控制台子系统进行编译,但是从命令行启动时,它会打开一个新窗口而不是重用相同的控制台窗口。
似乎原因是可执行文件有一个需要管理员权限才能运行的清单。
这是为了能够正确阅读HKLM中的某些密钥而添加的。
我该如何解决这个问题?
答案 0 :(得分:3)
您无需在应用程序清单中指定requestedExecutionLevel
requireAdministrator
,以便能够在没有虚拟化的情况下从HKLM读取。
您无需升级即可阅读HKLM。只要您的进程具有指定requestedExecutionLevel
的应用程序清单,那么它就不会被虚拟化。因此,结论是您需要指定requestedExecutionLevel
asInvoker
。
注册表虚拟化的详细信息可以在MSDN docs。
中找到