gpt4 book ai didi

c++ - Windows在C++中锁定每个用户的USB端口

转载 作者:行者123 更新时间:2023-11-28 05:20:41 25 4
gpt4 key购买 nike

我的软件受 USB 硬件 token 保护,我想实现以下目标:

  • 用户应该能够启动任意数量的软件实例
  • 如果第一个用户已经在运行该软件,则同一台计算机上的第二个用户将无法启动该应用程序。

所以基本上,如果第一个用户启动该软件,我想锁定 USB 端口,以便只有该用户可以访问它。该软件是用 C++ 编写的,在 Windows >7 或 Windows Server >2008 上运行

有什么想法吗?

最佳答案

正如 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. 如果时间戳指示“外来”进程正在运行,您可以退出当前进程并显示一条消息,表明有另一个用户 session 正在运行
  6. 如果未检测到“外来”进程,则为当前用户添加/编辑条目。
  7. 使用时间戳定期更新心跳

关于c++ - Windows在C++中锁定每个用户的USB端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41591833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com