2009-07-14 28 views
3

ジャスト(理想的には、しかし、Win32のネイティブが行います.NETを使用して)、Windowsの共有から読み取ったファイルを把握することが可能である場合には不思議?.Netフレームワークを使用してWindows共有(SMB共有)へのアクセスをプログラムでログに記録できますか?

私は何をしようとしてることは、私が最も人気があるファイルであるか、どのアクセスしているユーザーを確認できるように、Windowsのシェアをawstatsのようなものを作成することです。

私は変化に興味を持っていないよ - 私は、IP /ホスト名とどのファイルと一緒に(時間)のアクセスをログに記録します。

答えて

3

...は、そのcurrenlty共有にアクセス

using System.Management; 
ManagementObjectSearcher search = 
      new ManagementObjectSearcher("root\\CIMV2","SELECT * FROM Win32_ConnectionShare"); 
     foreach (ManagementObject MO in search.Get()) 
     { 
      string antecedent = MO["antecedent"].ToString(); 
      ManagementObject share = new ManagementObject(antecedent); 


      string dependent = MO["dependent"].ToString(); 
      ManagementObject server = new ManagementObject(dependent); 


      string userName = server["UserName"].ToString(); 
      string compname = server["ComputerName"].ToString(); 
      string sharename = server["ShareName"].ToString(); 
     } 

は、WMIのコアファイルイベントlistnersについて確認していない識別するために使用されるスニペット。しかし、これをNoramlFileSystemWatcherにうまく統合することができます。ネットワークパスに変更が検出された場合は、上記のコードをトリガーします。簡単に十分な何が必要データに

2

あなたはFileSystemWatcherをしたいです。それを使用して変更を記録するプログラムを作成します。サンプルC#の下に、これはWMIを使用して可能である

+0

一つの問題は、バッファが – chills42

+0

は私が変更に興味がないんだけど...いくつかのデータを記入し、失うことができるということである - 私は、IP /ホスト名とどのファイルと一緒に(時間)のアクセスをログに記録します。 – Ravi

+0

提案していただきありがとうございますが、私はFileSystemWatcherをチェックアウトしており、ネットワークとローカルアクセスを区別していないようです。 – Ravi

1

SMBだからあなただけのポート445(または任意のポート(複数可)あなたが上でそれを実行していることが起こる)上のトラフィックをログに記録することができ、ポート445上のデフォルトで実行され、マッサージ。

私はWinPcapWinDump(Windows版のlibpcapとtcpdump)を使っています。カスタムルールを定義する(たとえば、1つのポートまたはポートの範囲にデータを記録する)のは簡単です。 the manualの '式'のセクションをご覧ください。データファイルには多くの異なる言語でパーサーが用意されています。クイック検索で必要なものを見つけることができます。あなたがPcap.Netを使用することができます.NETでのWinPcapを使用してそれを行うために

0

。 C++/CLIとC#で書かれたWinPcapのラッパーであり、パケット解釈フレームワークを含んでいます。このソリューションで

関連する問題