web-dev-qa-db-ja.com

どのコンピューターがネットワーク共有でファイルを開いているかを確認するにはどうすればよいですか?

環境:

Windows XP sp3、Windows 2003サーバー

問題:

数十台のキオスクマシンがあり、それぞれに同じログオン名が付けられていて、共有上のファイルをたまに短時間しか使用していません。レートは複数のロックであり、1分で解放されます。

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

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

未リリースのロックの問題は、先月数回発生しています。ロックの原因となっているキオスクデバイスを探し、ロックが発生したときにすばやく検出できるようにしてきました。

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

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

特定のコンピューターで特定のファイルが開いていてロックされていることがわかりません。

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

ありがとう-

ロブ

21
RobW

この小さなフリーウェアのユーティリティ( ShareWatch )をチェックしてください。あなたが探していることはそれでうまくいくと思います。

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

alt text

10
techie007

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

次に次のように入力します:openfiles/queryip of the networkshare

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

here でopenfilesの詳細情報を取得できます。

7
sky100

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 /?

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

5
Thomas

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

あなたが探している解決策は、そのシステムで監査ポリシーを設定し、そのファイルを設定して、その特定のユーザーからのアクセスを監査することだと思います。これを実行する手順は、ネットワークの設定によって異なる可能性があるため、監査するさまざまなシステムを設定する方法について、Microsoftのtechnetリンクを紹介します。

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

これを設定したら、ユーザーアカウントを監査者としてアタッチして、監視する特定のファイルを設定するようにしてください。これで準備が整います。

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

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

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

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

2
Thomas

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

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

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

  • EnableOpLocksレジストリ値を0に設定して、 opportunistic Locking を無効にしてみてください。

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

これはパフォーマンスをいくらか低下させますが、何も壊すべきではありません。

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

2
Helvick

可能であれば、別のユーザーを別のキオスクに割り当てます-他のログの分析に役立つ場合があります...

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

さまざまなキオスクからこれらを収集し、それらをe.g.にインポートします。 Excelで閉じられなかったものを探してください...

1
reiniero

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

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

0
petrus

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

0
mbrownnyc

これを決定するためにコマンド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への接続は発信です。他のすべての接続はローカル接続です。

0
Bryan