将CopyData用于提升的应用程序有什么好的替代方法

时间:2010-12-08 22:39:59

标签: .net uac sendmessage wm-copydata

我有一个停止服务的应用程序,复制文件,然后再次启动服务。我希望它显示一个进度条,没有额外的窗口,没有更改屏幕,只是让UAC做它的事情并从那里继续(它是一个配置程序,所以它仍然可以作为标准用户使用,副本上有盾牌图标按钮)。

它的方式是通过打开一个单独的应用程序(另一个本身,像msiexec那样隐身,就像msiexec所做的那样)作为管理员,然后新的应用程序完成它的事情并通过SendMessage发送回进度报告。这工作正常,但事实证明SendMessage仅在管理/非管理应用程序之间单向工作。重定向StandardInput将不起作用,因为它需要关闭ShellExecute,并且“runas”需要ShellExecute启用。

我不想使用文件,因为这会很慢并且存在安全风险(我之前发送的密钥代码与包含命令的CopyData消息一起)。是否有另一种方法可以重定向StandardInput / Output? MSI如何做到这一点?

我正在使用C#。

1 个答案:

答案 0 :(得分:0)

我打算像西蒙那样建议管道。

其中一个技巧是,更高的完整性流程需要创建管道并使用中等强制完整性级别对其进行标记,以便您的中等完整性流程可以访问它。