你可以知道谁有一个共享开放:
打开计算机管理(右键单击我的计算机并选择管理)然后从左侧的树视图中选择:
系统工具>共享文件夹>会话
这列出了谁正在通过共享访问文件。
有一个关于以编程方式执行此操作的答案:
https://stackoverflow.com/a/2418657/359135
如果您真的想更进一步并且您拥有管理员权限,您可以使用此信息来询问连接机器上正在运行的进程:
tasklist.exe /S SYSTEM /U USERNAME /P PASSWORD
http://www.watchingthenet.com/how-to-view-and-kill-processes-on-remote-windows-computers.html
我不建议你做任何这些......更多地强调需要什么。我会在某个地方运行一个服务器,该服务器会收到来自您的应用程序的打开、关闭和 ping 通知。
ping 通知可让您识别已崩溃、失去连接或出于任何其他原因未向服务器应用程序发送关闭通知的实例。
我已经看到这只是通过在每分钟左右写入的开放会话数据库中创建一个表来完成的。我不知道这对数百万用户如何工作,但我已经看到它对数十个用户(最多大约一百个)运行良好。
编辑:
更多关于 ping..
如果您有服务器端代码,您可以主动查找丢失的 ping,但是我很想在阅读打开的会话时只使用数据库表并在您的选择中添加 where 子句:
Select
*
FROM
Session
WHERE
LastPing > DATEADD(second,-60,Now())
我会在插入时检查旧记录,这样你就不会得到很多旧行。
编辑:为了清楚起见,如果您使用了此答案开头列出的疯狂技术,您将无法知道有人已将文件复制到本地计算机并运行它。如果您让程序坚持它与特定数据库或服务器有连接,那么您将拥有更多控制权。