2013-11-04 146 views
2

我確實有一個Windows控制檯應用程序,用C++編寫並與控制檯子系統一起編譯,但是當從命令行啓動時,它確實會打開一個新窗口而不是重新使用同一控制檯窗口。Windows控制檯應用程序在新的控制檯而不是相同的控制檯中打開

看來,原因是可執行文件有一個清單,需要管理員權限才能運行。

這是爲了能夠正確閱讀HKLM的一些鍵而添加的。

我該如何解決這個問題?

+1

它是否有一個表明它必須以管理員身份運行的清單?如果從提升的命令提示符運行它,行爲是否會改變? –

+0

你如何從蝙蝠運行你的exe文件?使用名稱或使用call命令? – Raxvan

+0

你是對的,這有清單作爲管理員運行。這是爲了能夠在沒有虛擬化的情況下閱讀HKLM所需的。同一個可執行文件作爲服務運行,但它也可以作爲控制檯應用程序運行。我必須*閱讀*來自HKLM的一些設置,甚至可能寫入(不確定)。沒有這個,我很驚訝沒有從HKLM中讀到任何東西。 – sorin

回答

3

您不需要在應用程序清單中指定的requireAdministrator以使其能夠在沒有虛擬化的情況下從HKLM讀取數據。

您不需要提升以便從HKLM讀取。只要你的進程有一個指定requestedExecutionLevel的應用程序清單,它就不會被虛擬化。因此,結論是您需要指定asInvokerrequestedExecutionLevel

註冊表虛擬化的詳細信息可以在MSDN docs中找到。

相關問題