誰が共有を開いているかを知ることができます:
コンピューターの管理を開き (マイ コンピューターを右クリックして [管理] を選択)、左側のツリー ビューから次の項目を選択します。
システム ツール > 共有フォルダー > セッション
これには、共有を介してファイルにアクセスしているユーザーが一覧表示されます。
これをプログラムでsdoingすることについてSOの答えがあります:
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 通知を使用すると、クラッシュした、接続が失われた、またはその他の理由でサーバー アプリにクローズ通知を送信しなかったインスタンスを特定できます。
私は、毎分かそこらに書き込まれるオープン セッションの DB にテーブルを配置するだけで、これが行われるのを見てきました。これが何百万人ものユーザーに対してどのように機能するかはわかりませんが、数十人のユーザー (最大で約 100 人) に対してうまく機能しているのを見てきました。
編集:
pingの詳細..
サーバー側のコードがある場合は、不足している ping を積極的に探すことができますが、開いているセッションを読み取るときに、DB テーブルを使用して、select に where 句を追加したくなるでしょう。
Select
*
FROM
Session
WHERE
LastPing > DATEADD(second,-60,Now())
挿入時に古いレコードをチェックして、古い行がたくさんぶらぶらしないようにします。
編集:明確にするために、この回答の冒頭に記載されているクレイジーな手法を使用した場合、誰かがファイルをローカルのマシンにコピーして実行したことを知る方法はありません。プログラムに特定の DB またはサーバーへの接続を要求させる場合は、より多くの制御が可能になります。