2010-12-08 49 views
0

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

这样做的方式是通过以管理员身份打开一个单独的应用程序(另一个应用程序本身,如msiexec所做的那样不可见),然后新用户通过SendMessage发送进度报告。这工作正常,但事实证明SendMessage只能在管理员/非管理员应用程序之间工作。重定向StandardInput将不起作用,因为需要ShellExecute关闭,“runas”需要ShellExecute才能开启。

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

我为此使用C#。

+1

还有其他的方式来进行进程间通信:管道,套接字,内存映射文件,WCF等......你有没有考虑过这个? – 2010-12-08 23:15:55

回答

0

我正在建议管道,就像西蒙一样。

一个招数,不过,是在更高的完整性过程中需要创建管与中等强制性完整性级别标记它,让你的中等完整性进程可以访问它。

相关问题