【问题标题】:Running Elevated on Startup & Inter Process Communication在启动和进程间通信上运行提升
【发布时间】:2017-06-29 08:45:46
【问题描述】:

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

  • 从用户登录开始
  • 捕获具有提升权限的进程
  • 存在 UI 和 TaskIcon
  • 能够重新启动/关闭我的程序

我查看了TaskScheduler 解决方案,但启动 UI 似乎存在问题,并且任务栏图标可能不会显示,所以这似乎不是解决方案,至少按照建议的方式。

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

总而言之,我的问题是,我该如何以正确的“.NET (4.6) / C# on Windows 10”方式进行架构?

【问题讨论】:

    标签: c# .net windows-10


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多