我正在编写一个控制台工具。如果没有提升UAC支持(清单文件)的权限,则从命令提示符( cmd.exe )或控制台文件管理器(如 far.exe )调用此工具会在相同的窗口,将其输出写入同一窗口等。
但是现在,当manifest file was added时,在UAC请求对话框之后为工具创建了一个新的控制台窗口,因此工具的输出被写入,窗口关闭。这样的工具没有用于控制台的目的。
如何解决这个问题?那里有什么变通方法?
答案 0 :(得分:2)
据我所知,没有办法“修复”这个问题。此行为是设计使然,旨在确保您提升的任何命令行工具不受非提升命令行中的任何路径修改的影响。
这个想法是,在正常的一天工作中,人们在他们的机器上运行任何程序。这些程序可能会修改用户的路径,因此文件夹中包含名为reg.exe的恶意程序,例如放在c:\ windows \ system32之前。然后用户运行需要提升的管理工具,该工具调用reg.exe而不指定路径并且瞧 - 您已经拥有。
您应该考虑将工具的输出放入日志文件中。或者,您可以将工具分为两部分 - 一个不需要提升的控制台工具和一个需要提升的COM out-of-proc服务器。