在启动时运行升高&进程间通信

时间:2017-02-10 21:28:02

标签: c# .net windows-10

我正在构建一个在后台记录3D流程的程序。其中一些以管理员身份运行,我需要运行提升以捕获它们。我正在使用带有p / invoke的psapi EnumProcesses。我现在的问题是:我如何设计这个程序:

  • 从用户登录开始
  • 以较高权限捕获流程
  • 让UI和TaskIcon出现
  • 能够重启/关闭我的程序

我查看了TaskScheduler解决方案,但启动用户界面似乎存在问题,而且任务栏图标可能不会显示,所以这似乎没有解决方案,至少在建议的方式上。

我见过人们推荐一个单独的进程作为任务/服务运行,然后与之通信。如果这是一个更好的推荐解决方案,那么在C#中与其他进程通信的推荐方法是什么?我见过人们推荐使用命名管道和RPC。

总而言之,我的问题是,如何在Windows 10"上构建适当的#34; .NET(4.6)/ C#。方式是什么?

1 个答案:

答案 0 :(得分:0)

一些想法:
用户登录后启动该程序:
您应该浏览Windows启动文件夹或注册表HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run
捕获权利提升的流程
检查this;
UI和TaskIcon /能够重启/关闭我的程序
我会选择在系统托盘中启动的UI应用程序,并使用WCF与进程监视器进行通信以进行更复杂的数据迁移,如果只需要信号迁移,则使用EventWaitHandle进行通信。

如前所述,我会选择2个应用程序:1个用作监视器服务(无UI)和带有UI的客户端应用程序。这些进程之间的通信在很大程度上取决于您的需求,但WCF可能是复杂数据的理想选择,或者只是发送/接收信号的EventWaitHandle。