どのコンピューターがネットワーク共有でファイルを開いているかを知る方法は?


21

環境:

Windows XP SP3、Windows 2003サーバー

問題:

それぞれが同じログオン名を持つ数十台のキオスクマシンがあり、共有マシン上のファイルをときどき短くします。レートは複数のロックであり、1分間解放されます。

最近、ファイルを排他的にロックし、その後ファイルを解放しないクライアントの1つを経験しました。 

これが発生した場合、ファイルを閉じることができますが、数分以上経過し、これは許容できない停止です。

先月、リリースされていないロックの問題が何度か発生しました。どのキオスクデバイスがロックの原因であり、ロックが発生したときに迅速に検出できるかどうかを探していました。

サーバーから取得できる情報にはギャップがあるようです。

さまざまなツールから確認できます
。-開いてロックされているファイル。(多くの方法)
-特定のファイルが開いているかロックされているログオン。(多くの方法)
-特定のコンピューターが一般的にファイルを開いていること。(共有フォルダー、セッションmmc)

確認できないのは、特定のコンピューターが特定のファイルを開いてロックしていることです。

誰でもこれに到達する方法を知っていますか?

ありがとう-

ロブ


1
求めているものとは異なりますが、別のアプローチとして、システムごとに個別のアカウントを作成します。
ブライアン

回答:


10

この小さなフリーウェアutil(ShareWatch)をチェックしてください。あなたが探しているものを実行できると思います。

リストされている機能の1つ:「各共有に接続しているユーザーとコンピューター、および開いているファイルを表示します。」

代替テキスト


1
これをありがとう-Sharewatchを試しました。私の状況では(同じログイン名を持つ12を超えるクライアント)、開いているファイルとワークステーションを同じリストに結合します。どのワークステーションが開いているかわかりません。また、[プロパティ]を選択すると、ワークステーションでファイル名ではなくx個のファイルが開かれていることが報告されます。ファイルのプロパティを選択すると、同様の情報が得られます。
RobW

7

コマンドライン(CMD)を入力し、

次に、ネットワーク共有のopenfiles / query ipと入力します

また、ユーザー名とパスワードが必要になる場合があります。

ここでopenfileの詳細情報を取得できます


ありがとう。Openfilesは、サーバーコンソールからのネットセッションとほぼ同じ出力を提供します。ファイルを開いたコンピューター名は提供しません。ファイル->ユーザー接続ではなく、ファイル->コンピューター接続を探しています。
RobW

5

Sky100の投稿は正しいので、あなたが尋ねたものを提供するのではなく、問題を解決するために必要なものを提供することで、Sky100の投稿を参照したいと思うと思います。"openfile / query / v"(詳細)コマンドを使用して、必要なデータを提供するため、ロックされたID番号を参照する必要があります。指定されたリスト内でファイル名を検索すると、データには読み取りと書き込みが有効になっているアイテムが表示され、それに伴って特定のID番号が提供されます。いいえ、ファイルがロックされている特定のシステムを見つけることができない場合がありますが、提供されているツールを使用すると、そのユーザーをファイルから切断できます。これが私のとりとめを簡単にするための段階的な手順です。

1)管理者権限を持つファイルサーバーで、スタート>実行> CMD [ENTER]を実行します

2)CDデスクトップ[ENTER](その理由はすぐにわかります。)

3)openfiles / query / v> file.txt [ENTER](サーバー上で開かれているすべてのファイルのリストを含むファイルをデスクトップに作成します。)

4)file.txtを開き、ファイル名と読み取りと書き込みの両方のアクセス許可を含む行を検索します。

5)その行のID番号を書き留めて、コマンドコンソールに戻ります。

6)openfiles / disconnect / ID [ID番号をここに入力] [ENTER]

ファイルサーバーに対する管理者権限がある限り、そのシステムはファイルから切断され、システムが自動化されていると想定し、必要に応じて物事が動き続けるようにします。

参照:openfiles / query /?openfiles / disconnect /?

システムに対応したスクリプトまたはプログラムされたアプリケーションが必要な場合は、お気軽にコメントしてください。連絡先情報を非常に低価格で提供します。アプリケーションのサポート。


ハ!私の問題は、ファイルを開いたコンピューターを見つけることでした。その方法についてのアイデアはありますか?ファイルを特定して閉じるのは簡単で、この結果を設計する方法はたくさんあります。回答に感謝し、あなたのコマーシャルオファーは私に早朝の
くすくす

申し訳ありませんが、openfilesプロセスが解決策ではないことは知りませんでした。あなたが説明したことから、ファイルを閉じず、ロックされた設定を削除するだけなので、システムをさらに調べる必要が解決したようです。実際、私は自分の会社用にアプリケーションを作成しました。そのような複雑さを避けるために、少しずつ実行するように自動化することができます。しかし、それはポイントの横にあると思います。あなたの直接の質問に答えるには:はい、それらのシステムがそのファイルにアクセスしたかどうかを監査する方法が必要です。詳細については、次の投稿をご覧ください。
トーマス

実際には、戻って投稿を読み直します...「これが発生した場合、ファイルを閉じることができますが、数分以上経過し、これは許容できない停止です。」ソリューションが機能しないのは、ファイルを閉じているためです。以前に提供された私の一部およびSky100のソリューションはファイルを閉じませんが、アクセス権を読み取り専用に変更します。繰り返しになりますが、openfilesがあなたが探しているソリューションをどのようにISNしていないかについて私は混乱しています。非解決策として書き留める前に、それを試してみてください。プログラマに興味がない場合は、数分ごとに実行するバッチファイルを作成します。
トーマス

状況に対する私の理解が完全でない場合に時間を無駄にしないために、私はあなたの質問に対する私の解決策を残します。
トーマス

んー。おApび申し上げますが、私の質問があなたによって対処されているとは思いません。どのコンピューターがファイルを開いたままにしているかを判別するのに助けが必要でした。コンピューター名を決定することに本当に興味があります。残りはすべて興味深いですが、私が望んでいる有限のことを教えてくれません。
RobW

2

述べようとしている問題を解決しようとしている(つまり、特定のクライアントコンピューター(ユーザーではない)をロックされたファイルにマップする)のですか、それとも解決する必要があるロックの問題がありますか?

後者が役立つ場合は、次の2つのことを検討します。

  • クライアントにインストールされているAVを確認します-複数のクライアント側のAVが共有で深刻な厄介な異常なロック動作を引き起こすのを見てきました。

  • EnableOpLocksレジストリ値を0に設定して、便宜的ロックを無効にしてみてください。

    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters EnableOplocks REG_DWORD 0または1デフォルト:1(有効)

これにより、パフォーマンスが多少低下しますが、何も中断しないでください。

しかし、誰かが実際にあなたの述べられた質問に答えてくれるのを楽しみにしています-それは興味深い問題です。


ヘルヴィックありがとう!日和見ロックを無効にすることは興味深いアプローチです。私が推測するサーバー?
-RobW

はい、サーバー上にあります-これは、クライアントがファイル(の一部)をローカルにキャッシュできるように、日和見ロックを要求することを防ぎます。
ヘルビック

日和見ロックを無効にしたことによるパフォーマンスの低下は、ほとんどの場合受け入れられません。テストベッドでこれを確認する必要があります。
RobW

これは間違いなくリスクです-あなたが見つけたものに興味があります。
ヘルビック

2

RobWの問題のトラブルシューティングを行い、別の解決策を提供しようとして、彼の質問に答えることができませんでした。

あなたが探している解決策は、そのシステムに監査ポリシーを設定し、そのファイルを設定してその特定のユーザーからのアクセスを監査することだと思います。これを実行する手順は、ネットワークのセットアップによって異なる場合があるため、監査するさまざまなシステムをセットアップする方法に関するマイクロソフトのテクネットリンクを参照します。

http://technet.microsoft.com/en-us/library/cc787268(WS.10).aspx

それを設定したら、ユーザーアカウントを監査者としてアタッチして、監視する特定のファイルを設定することを確認して、準備ができているはずです。

セキュリティイベントログを後で確認するだけで、各システムが一覧表示されますが(すべて同じユーザー名を使用しているため)、ファイルへの読み取りおよび書き込みアクセス権を現在持っているシステムを並べ替えて見つけるのは難しくありません。

数日ごとにクリアするようにセキュリティログを設定すると便利な場合があります。

これが機能しない場合は、ユーザー名ではなく、ファイルにアクセスする各ホスト名ごとにシステムを設定する必要があります。これは、Microsoft管理コンソールを介して可能になると思います。

繰り返しますが、プログラミングが必要な場合、私はいくつかの小さなプログラムのためにあなたのお金をたくさん取ることに興味があるビジネスマンではありません。私は、個人でさえshしない価格で高品質のプログラミングを提供します。これが問題の解決に役立つことを願っています。


これをありがとう。最初の問題の直後に、そのディレクトリに監査を設定しました。このディレクトリでは、キオスクだけでなく150台までのクライアントがアクティブになっています。問題は断続的であるため、信号対雑音比は非常に大きく、特定のコンピューターをファイルイベントにリンクする明確な方法は見当たりませんでした。これをもう一度見てみましょう。これについてはすでにいくつかの設計会議がありました。ログオンアカウントなど、いくつかのトピックがテーブルにあります。私はまだどのコンピューターがファイルを開いたままにしているのか知りたいです:-)
RobW

1

可能であれば、異なるユーザーを異なるキオスクに割り当てます-他のログを分析するのに役立つかもしれません...

それが不可能な場合:可能な解決策の概要:解決策は、キオスクで(問題のファイルに対して)適切なフィルターを使用してsysinternals processmonitorのようなツールを実行することです(非表示にできるかどうかわかりません)。キャプチャしたデータをファイルに保存するコマンドラインオプションがいくつかあります。

これらをさまざまなキオスクから収集し、Excelなどにインポートして、閉じられていないものを探します...


0

コマンドnetstatを使用してこれを判断するのはどうですか?

netstat -an | find ":445"

これにより、接続されているマシンのIPアドレスがわかります。

IPアドレスではなくホスト名が必要な場合は、使用します

netstat -a | find "microsoft-ds"

ただし、特にビジーなファイルサーバーまたはドメインコントローラーでは、実行するホストルックアップが多くなるため、実行に時間がかかります。

また、結果にはインバウンド、アウトバウンド、アイドルリスニングポートが表示されることに注意してください。

インバウンド接続では、左の列に:445が表示され、右の列にアウトバウンドが表示されます。

-nオプションを使用しない場合、「LISTENING」と表示される結果や、ローカルIPアドレス(0.0.0.0または127.0.0.1など)のみを表示する行、またはコンピューターのホスト名を所有する行を無視できます。

例えば:

Z:\>netstat -an | find ":445"
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    127.0.0.1:445          127.0.0.1:41764        ESTABLISHED
  TCP    127.0.0.1:445          127.0.0.1:41767        ESTABLISHED
  TCP    127.0.0.1:41764        127.0.0.1:445          ESTABLISHED
  TCP    127.0.0.1:41767        127.0.0.1:445          ESTABLISHED
  TCP    192.168.16.17:445      192.168.16.87:1098     ESTABLISHED
  TCP    192.168.16.17:18055    192.168.16.24:445      ESTABLISHED
  TCP    192.168.16.17:20678    192.168.16.24:445      ESTABLISHED
  UDP    0.0.0.0:445            *:*

ここで接続されている唯一のホストは192.168.16.87です。192.168.16.24への接続はアウトバウンドです。他のすべての接続はローカル接続です。


うーん、質問を読み直してください。問題が解決するわけではありません。コンピューターがどのファイルを開いているかがわからないからです。
ブライアン

問題ない。アイデアに感謝します。
RobW

0

使用した共有とロックされたファイルを確認するためのグラフィカルツールがウィンドウ内にあったことを覚えています。

「コンピューター管理」の下の「システムツール」(〜フランス語から翻訳...)、「共有フォルダー」という名前である必要があります。


0

これは非常に古いものですが、ADSIはWinNT://インターフェイスを提供します。これにより、LANMANSERVERサービスにアクセスし、「共有フォルダー」mmcスナップインで既に公開されているプロパティを照会できます。現在、ホストユーザーを開いているファイルにリンクする方法を研究しています。


-1

それが私であり、同じサブネット上のLinuxマシンにアクセスできた場合...問題の共有ポートで、ファイルを開いたままにしているボックスに対してtcpdumpを実行します。

UNIXがない場合でも、tcpdumpを使用できますが、インストールする必要があります。

Linuxから...私はこのような何かをするだろう:tcpdump -ieth0 -s0 -Xホスト名ポート1234 | grep -i "nameoffile"

ペイロードのほとんどがバイナリであることを知っています...しかし、ファイルへのアクセスのための認証をネゴシエートするための初期ヘッダーがクリアテキストであることは間違いありません。

これにより、そのボックスに接続するすべての遠端ホストと、パケットデータ内のファイル名の場所(暗号化されていないか、バイナリである場合)が表示されます。

がんばろう!しかし、私の経験から、次のものを使用する必要があります。

1)共有ファイルは悪い考えです!特に、接続を切断したり、接続が遅い場合にファイルがロックされたままになる可能性のあるリモートシステムの場合。

2)共有ファイルへのアクセスは、クライアント間の競合状態を引き起こします。貴重なティック時間を無駄にします。

3)共有ファイルを使用する必要がある場合...適切にデバッグできるように、リモートサイトごとに異なるユーザー名を作成します。

最良のシナリオ...ファイルを削除してSQLにマージするか、クライアントがファイルまたはデータにアクセスできるWebサービスを作成します。

++トッド

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.