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