C 从驱动程序启动应用程序

C 从驱动程序启动应用程序,c,windows,driver,wdk,C,Windows,Driver,Wdk,我可以从驱动程序代码启动另一个应用程序吗?代码是用C编写的,用DDK编译。我不这么认为。相反: 您可以使用一个服务将DeviceIoControl发送到设备 然后,设备保留(未完成)关联的IOCTL 当设备想要启动应用程序时,它完成IOCTL 当服务注意到其DeviceIoControl已完成时,它将启动另一个应用程序 服务可以启动应用程序,但我不知道它是否可以在用户的桌面上启动。如果您希望启动的应用程序与登录的最终用户交互,那么最好将DeviceIoControl功能放在(可见或不可见)应

我可以从驱动程序代码启动另一个应用程序吗?代码是用C编写的,用DDK编译。

我不这么认为。相反:

  • 您可以使用一个服务将DeviceIoControl发送到设备
  • 然后,设备保留(未完成)关联的IOCTL
  • 当设备想要启动应用程序时,它完成IOCTL
  • 当服务注意到其DeviceIoControl已完成时,它将启动另一个应用程序
服务可以启动应用程序,但我不知道它是否可以在用户的桌面上启动。如果您希望启动的应用程序与登录的最终用户交互,那么最好将DeviceIoControl功能放在(可见或不可见)应用程序中,当用户登录时,该应用程序会在用户的工作站中自动启动,而不是像上述那样提供服务


如果您这样做,那么请注意假设只有一个登录用户(在Citrix/终端服务器上可能有很多用户)。

我不这么认为。相反:

  • 您可以使用一个服务将DeviceIoControl发送到设备
  • 然后,设备保留(未完成)关联的IOCTL
  • 当设备想要启动应用程序时,它完成IOCTL
  • 当服务注意到其DeviceIoControl已完成时,它将启动另一个应用程序
服务可以启动应用程序,但我不知道它是否可以在用户的桌面上启动。如果您希望启动的应用程序与登录的最终用户交互,那么最好将DeviceIoControl功能放在(可见或不可见)应用程序中,当用户登录时,该应用程序会在用户的工作站中自动启动,而不是像上述那样提供服务


如果您这样做,那么请注意假设只有一个登录用户(Citrix/终端服务器上可能有许多用户)。

除最后一点外,我大体上同意这一点。如果Vista必须与用户的桌面交互,那么它将无法在Vista上工作,而且这通常是一种不好的做法。相反,在用户登录时运行一个程序,该程序通过IPC与服务交互。通过快速用户切换,也可能有多个用户。在大多数情况下,我同意这一点,但最后一点除外。如果Vista必须与用户的桌面交互,那么它将无法在Vista上工作,而且这通常是一种不好的做法。相反,在用户登录时运行一个程序,该程序通过IPC与服务交互。通过快速用户切换,也可能有多个用户。