我有一个应用程序可以停止服务,复制文件,然后再次启动服务。我希望它显示一个进度条,没有额外的窗口,没有更改屏幕,只需让UAC做它的事情,并从那里继续(这是一个配置程序,所以它仍然可以用作标准用户,副本上的盾牌图标按钮)。什么是使用CopyData升级应用程序的好替代
这样做的方式是通过以管理员身份打开一个单独的应用程序(另一个应用程序本身,如msiexec所做的那样不可见),然后新用户通过SendMessage发送进度报告。这工作正常,但事实证明SendMessage只能在管理员/非管理员应用程序之间工作。重定向StandardInput将不起作用,因为需要ShellExecute关闭,“runas”需要ShellExecute才能开启。
我不想使用一个文件,因为这会很慢并且存在安全风险(我之前发送的密钥代码与包含命令的CopyData消息一起)。有没有其他方法可以重定向StandardInput/Output? MSI如何做到这一点?
我为此使用C#。
还有其他的方式来进行进程间通信:管道,套接字,内存映射文件,WCF等......你有没有考虑过这个? – 2010-12-08 23:15:55