Windows在c ++中锁定每个用户的usb端口

时间:2017-01-11 13:09:27

标签: c++ windows locking usb

我的软件受USB硬件令牌保护,我希望实现以下目标:

  • 用户应该可以根据自己的喜好启动任意数量的软件实例
  • 如果第一个用户已在运行该软件,则同一台计算机上的第二个用户应该无法启动该应用程序。

所以基本上如果第一个用户启动软件我想锁定usb端口,所以只有这个用户才能访问它。本软件采用C ++编写,在Windows> 7或Windows Server> 2008

上运行

任何想法?

1 个答案:

答案 0 :(得分:1)

正如Jonathon建议的那样,您可以使用全局名称对象。检查全局共享内存的示例:https://msdn.microsoft.com/en-us/library/windows/desktop/aa366551(v=vs.85).aspx

当流程开始时,它应

  1. 获取GetUserName(也许GetCurrentProcessId)。
  2. 打开已命名的共享内存,例如" Global \\ MyAppRunningInstances"
  3. 解析每一行的值如:Username,ProcessId,heartbeat-timestamp ...
  4. 如果找到另一个具有不同用户名的进程,请检查心跳时间戳,可能很久以前崩溃了:)(如果该进程不是唯一的,则不会销毁共享内存映射)
  5. 如果时间戳表明"外星人"进程正在运行,您可以退出当前进程,并显示另一个用户会话正在运行的消息
  6. 如果没有"外星人"检测到的进程,添加/编辑当前用户的条目。
  7. 使用时间戳定期进行心跳更新