C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: ファイルを作成したexeの名前が知りたいです。


(過去ログ 82 を表示中)

[トピック内 23 記事 (1 - 20 表示)]  << 0 | 1 >>

■48643 / inTopicNo.1)  ファイルを作成したexeの名前が知りたいです。
  
□投稿者/ ひろし (1回)-(2010/04/10(Sat) 23:44:43)

分類:[C#] 

OS:WindowsVista
開発言語:C#2008
FrameWorkバージョン:2.0

現在、FileSystemWatcher を使用してファイルを監視するプログラムを作成いています。
そこで質問なのですが、ファイルを作成したEXE名を調べる方法ってあるのでしょうか?

よろしくお願いいたします。

引用返信 編集キー/
■48644 / inTopicNo.2)  Re[1]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ やじゅ (1589回)-(2010/04/11(Sun) 01:13:43)
やじゅ さんの Web サイト
2010/04/11(Sun) 01:39:17 編集(投稿者)

No48643 (ひろし さん) に返信
> 現在、FileSystemWatcher を使用してファイルを監視するプログラムを作成いています。
> そこで質問なのですが、ファイルを作成したEXE名を調べる方法ってあるのでしょうか?

FileSystemWatcherでは作成したプロセスまでは取得出来ません。

「Process Monitor」を使うことで、ファイルを作成したプロセスを調べることは出来ます。
http://technet.microsoft.com/ja-jp/sysinternals/bb896645.aspx
http://pnpk.net/cms/archives/298

技術的なことは、APIフックとかドライバとか
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200908/09080017.txt
http://bbs.wankuma.com/index.cgi?mode=al2&namber=35801&KLOG=62
http://bbs.wankuma.com/index.cgi?mode=al2&namber=33419&KLOG=59
引用返信 編集キー/
■48657 / inTopicNo.3)  Re[2]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ ひろし (2回)-(2010/04/12(Mon) 00:36:49)
No48644 (やじゅ さん) に返信
> 2010/04/11(Sun) 01:39:17 編集(投稿者)

やじゅ様
コメントありがとうございます。

今回やりたいことは、まず、ファイル監視とは別に動いているシステムがありまして、いろんなEXEがいろんなテキストファイルを作成します。
それで、作成されたテキストは処理が終わった後にファイル名の先頭に「_」を付加して処理が終わったという記しを付ける決まりになっています。
で、先頭に「_」が付いているファイルはシステムの終了時に削除されるような仕組みになっています。

ですが、プログラミングミスによりリネーム忘れ等の事案が発生したりすることもあるので監視したいと思いました。

現在は以下の機能は既にできています。

1.Createされた時にリストボックスに追加する
2.リネームされた時に終了すみフラグをつける。
3.Createされてから、1分経過してもリネームされない場合のみ警告する。

それだけでも十分と言えば十分なのですが、なにせいろんなプログラムがいろんなファイルを吐き出すもので
どのEXEがしくっているのかを特定するのに時間がかかってしまうので、出来るのであればEXE名も特定したいと
考えておりました。

用途が特殊なので「Process Monitor」ではちょっとつらいかと思いました。m(__)mスイマセン

やはり、APIフックとか使わないと厳しそうですね・・・orz

ちょっと勉強不足でして、せっかく教えていただいた参考ページも100%理解できませんでした。orz

明日、もう一度教えていただいたページを気合入れて読んでみたいト思います。

ありがとうございましたm(__)m
引用返信 編集キー/
■48658 / inTopicNo.4)  Re[3]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ Azulean (543回)-(2010/04/12(Mon) 07:18:57)
リンク先にも書かれていますが、API フックは C# じゃ無理と言って差し支えないはず。
C++ で書く、その監視用の API フックが正常に動作・検知することをテストするといったことをしてまで、監視プログラムを作りたいのかどうか、考えてみてください。

場合によっては、既製のツールを探した方が早いのかもしれませんね。
http://www.hummingheads.co.jp/sep/option/option01.html#time (目的は違うが、やりたいことを実現している製品の一例)
引用返信 編集キー/
■48660 / inTopicNo.5)  Re[3]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ Jitta on the way (602回)-(2010/04/12(Mon) 07:33:00)
No48657 (ひろし さん) に返信
> ■No48644 (やじゅ さん) に返信
>>2010/04/11(Sun) 01:39:17 編集(投稿者)
>
> やじゅ様
> コメントありがとうございます。
>
> 今回やりたいことは、まず、ファイル監視とは別に動いているシステムがありまして、いろんなEXEがいろんなテキストファイルを作成します。
> それで、作成されたテキストは処理が終わった後にファイル名の先頭に「_」を付加して処理が終わったという記しを付ける決まりになっています。
> で、先頭に「_」が付いているファイルはシステムの終了時に削除されるような仕組みになっています。
>
> ですが、プログラミングミスによりリネーム忘れ等の事案が発生したりすることもあるので監視したいと思いました。

キッチリとテストすれば良いだけでは?
それとも、テスト用のプログラムを作ろうとしていますか?

また、システムが終了するときに先頭にアンダースコアのあるファイル名を持つファイルだけ削除するとのことですが、システム終了時に「作成途中」である削除対象外のファイルたちは、いつ「完成する」のでしょう?
引用返信 編集キー/
■48661 / inTopicNo.6)  Re[3]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ みきぬ (855回)-(2010/04/12(Mon) 07:45:22)
No48657 (ひろし さん) に返信
> 今回やりたいことは、まず、ファイル監視とは別に動いているシステムがありまして、いろんなEXEがいろんなテキストファイルを作成します。
> それで、作成されたテキストは処理が終わった後にファイル名の先頭に「_」を付加して処理が終わったという記しを付ける決まりになっています。

よくわからないけど、EXEごとに何か目印をつけるお約束にすればいいんじゃないの?
ファイル名とか、ファイルの先頭1行(コメント行)とか。
引用返信 編集キー/
■48663 / inTopicNo.7)  Re[4]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ なちゃ (422回)-(2010/04/12(Mon) 08:37:16)
副ストリーム付けとくとか。
まあ書き込み側の修正が要るので難しいかも知れませんが。

引用返信 編集キー/
■48664 / inTopicNo.8)  Re[3]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ .SHO (1275回)-(2010/04/12(Mon) 09:29:59)
No48657 (ひろし さん) に返信

> 今回やりたいことは、まず、ファイル監視とは別に動いているシステムがありまして、いろんなEXEがいろんなテキストファイルを作成します。

テキストファイルを作成するフォルダも、いろいろなんでしょうか?

引用返信 編集キー/
■48709 / inTopicNo.9)  Re[4]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ ひろし (3回)-(2010/04/12(Mon) 23:18:39)
Azulean様
コメントありがとうございます。

No48658 (Azulean さん) に返信
> リンク先にも書かれていますが、API フックは C# じゃ無理と言って差し支えないはず。

> C++ で書く、その監視用の API フックが正常に動作・検知することをテストするといったことをしてまで、監視プログラムを作りたいのかどうか、考えてみてください。
一先ず、リネーム漏れの場合に警告するところまでは出来ているので、プロセスの特定まではあきらめようかな、、と言う気持ちになってきました(;^_^A
C++は扱ったことが無いので習得までに時間がかかりすぎてしまいそうです・・・orz

> 場合によっては、既製のツールを探した方が早いのかもしれませんね。
> http://www.hummingheads.co.jp/sep/option/option01.html#time (目的は違うが、やりたいことを実現している製品の一例)
こちらも参考にさせていただきます。

ありがとうございました。
引用返信 編集キー/
■48711 / inTopicNo.10)  Re[4]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ ひろし (4回)-(2010/04/12(Mon) 23:59:52)
Jitta on the way様
コメントありがとうございます。

No48660 (Jitta on the way さん) に返信

> キッチリとテストすれば良いだけでは?
現在のプロジェクトが20名以上のプロジェクトとなっており、中には残念なことに
ちゃんとテストできない人もいるんです・・・orz

> それとも、テスト用のプログラムを作ろうとしていますか?
いえ、テスト用のプログラムではなく、あくまでもファイルが正しくリネームされている事を監視するだけでよいと思っています。
ちなみにバックグラウンドで動作させるので、基本は前面に出てくることは無い・・・と言うかそうであってほしいです(;^_^A

> また、システムが終了するときに先頭にアンダースコアのあるファイル名を持つファイルだけ削除するとのことですが、システム終了時に「作成途中」である削除対象外のファイルたちは、いつ「完成する」のでしょう?
フィルのリネームはファイルを作成したプログラムがリネームするとも限らず、次に起動するプログラムが作成されたファイルを処理して
リネームしたり、システム終了時のバッチ処理でリネームしたり、月の締め日にリネームされたりとさまざまです。

で、今作っているファイル監視のプログラムでは、どこどこのファイルだに ○○ で始まるファイル名の場合は
警告を出さない。といった機能もつけました。

引用返信 編集キー/
■48713 / inTopicNo.11)  Re[4]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ ひろし (5回)-(2010/04/13(Tue) 00:09:34)
みきぬ様
コメントありがとうございます。

No48661 (みきぬ さん) に返信
> よくわからないけど、EXEごとに何か目印をつけるお約束にすればいいんじゃないの?
> ファイル名とか、ファイルの先頭1行(コメント行)とか。
一応、無秩序にファイル名を付けている訳ではなく、プログラムAでは○○フォルダに Axxxxx.datとか Rxxxx.dat(xxxは日付など)
といった決まったファイル名で作成されます。
ただ、種類がありすぎでかつ、恥ずかしながら一覧化された資料が無いので、ぱっと調べられないのが現状です。orz
ちなみに、一機能ごとに1プログラムとなっており、複数のexeを連続で起動させて1処理が完了するといった内容になっているため
プログラムの本数的にはかなりあります。
しかも、大体のプログラムがファイルを読み、吐き出します。

引用返信 編集キー/
■48715 / inTopicNo.12)  Re[5]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ ひろし (6回)-(2010/04/13(Tue) 00:15:25)
なちゃ様
コメントありがとうございます。

No48663 (なちゃ さん) に返信
> 副ストリーム付けとくとか。
> まあ書き込み側の修正が要るので難しいかも知れませんが。
すいません・・・副ストリームの意味が分からないかもしれないです(;^_^A
ただ、書き込み側のプログラムをいじる事は出来ないです。
本システムの方は大規模なシステムとなっている為、自分の一存で変更することは出来ません。
また、出来ない様に管理されています。

ファイル監視の方は、休み時間を利用して個人的に勝手に作っているものなので好きなように出来ます(;^_^A

引用返信 編集キー/
■48716 / inTopicNo.13)  Re[4]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ ひろし (7回)-(2010/04/13(Tue) 00:17:36)
.SHO様
コメントありがとうございます。

No48664 (.SHO さん) に返信
> テキストファイルを作成するフォルダも、いろいろなんでしょうか?
はい。いろいろです。
一応、○○系のファイルは○○フォルダ。
一時ファイルはワークフォルダなど決まりはあります。

引用返信 編集キー/
■48718 / inTopicNo.14)  Re[5]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ Jitta on the way (605回)-(2010/04/13(Tue) 07:02:52)
No48711 (ひろし さん) に返信
> フィルのリネームはファイルを作成したプログラムがリネームするとも限らず、次に起動するプログラムが作成されたファイルを処理して
> リネームしたり、システム終了時のバッチ処理でリネームしたり、月の締め日にリネームされたりとさまざまです。

あれ?

> で、先頭に「_」が付いているファイルはシステムの終了時に削除されるような仕組みになっています。
> ですが、プログラミングミスによりリネーム忘れ等の事案が発生したりすることもあるので監視したいと思いました。

と、書いてありますよ?ここには、
「消し忘れがないように、ファイルがリネームされたことを確認したい」
と書いてあります。また、「そこで質問なのですが、ファイルを作成したEXE名を調べる方法ってあるのでしょうか?」とも、書いてあります。ここでは、「ファイルを作成したプロセス」だけを尋ねており、「最終的に加工を行なったプロセス」とは書かれていません。作ったものと、「削除可能」をマークするものが違うなら、別の方法を考えなければならないのでは?
というか、最後に処理を行なったプロセスが削除すれば良いのでは?

ところで、どのプロセスがどのファイルを作るのか、一覧がないという事ですが、それでは、どうやってテストをするのでしょう?どうやって、今行っている処理が正しいという安心を得られるのでしょう?

なんだか、作業の仕方を見直した方が良いのではないでしょうか。
引用返信 編集キー/
■48719 / inTopicNo.15)  Re[5]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ .SHO (1278回)-(2010/04/13(Tue) 08:26:19)
No48713 (ひろし さん) に返信

> 一応、無秩序にファイル名を付けている訳ではなく、プログラムAでは○○フォルダに Axxxxx.datとか Rxxxx.dat(xxxは日付など)
> といった決まったファイル名で作成されます。
> ただ、種類がありすぎでかつ、恥ずかしながら一覧化された資料が無いので、ぱっと調べられないのが現状です。orz

地道に一覧を作ってはどうでしょう?



引用返信 編集キー/
■48746 / inTopicNo.16)  Re[6]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ Jitta on the way (606回)-(2010/04/13(Tue) 21:07:44)
No48719 (.SHO さん) に同意

> 地道に一覧を作ってはどうでしょう?
>


長文書いたけど、「品質 保証は使用できません」と怒られた。何でやねんorz

引用返信 編集キー/
■48754 / inTopicNo.17)  Re[6]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ ひろし (8回)-(2010/04/13(Tue) 23:04:01)
Jitta on the way様
コメントありがとうございます。

No48718 (Jitta on the way さん) に返信
>>で、先頭に「_」が付いているファイルはシステムの終了時に削除されるような仕組みになっています。
>>ですが、プログラミングミスによりリネーム忘れ等の事案が発生したりすることもあるので監視したいと思いました。
>
> と、書いてありますよ?ここには、
> 「消し忘れがないように、ファイルがリネームされたことを確認したい」
> と書いてあります。また、「そこで質問なのですが、ファイルを作成したEXE名を調べる方法ってあるのでしょうか?」とも、書いてあります。ここでは、「ファイルを作成したプロセス」だけを尋ねており、「最終的に加工を行なったプロセス」とは書かれていません。作ったものと、「削除可能」をマークするものが違うなら、別の方法を考えなければならないのでは?
ちょっと分かりずらいですよね(;^_^A

システム全体の流れとして、朝一に業務開始処理というのが流れます。(データベースの更新云々)
業務開始後はいろんな処理が同時に各所で実行されます。(全て別exeです)
で、一日の最後に業務終了の処理がなれ、データベースの更新、リネームされたテキストファイルの削除等の処理を行います。

以前に書いた「システム終了時」と言うのは単体のexeが終了したときと言う意味ではなく、一日の最後に実行される業務終了の処理の事を言っていました。

ファイルをリネームするタイミングはさまざまなのですが、基本的には1exe内で処理が完結しリネームされる(すべき)ものが大半です。
私が質問していた「ファイルを作成したプロセスを取得したい」だけだと、当然ながら、月次処理の中でリネームされるもの等は警告になってしまう訳ですが、その警告は「月次処理の中でリネームされる」と確認できた時点で警告回避リストに追加し、警告されない様にしようと考えています。
取り合えずファイルを作成したexeさえすぐ分かれば、調査する作業も軽減できるかな?と考えています。

> というか、最後に処理を行なったプロセスが削除すれば良いのでは?
これについては、例えば業務終了のときに金額が合わないとか、その他もろもろの理由でテキストファイルを追っていかなければならない時があったりするので、業務終了までは削除しない様になっています。

> ところで、どのプロセスがどのファイルを作るのか、一覧がないという事ですが、それでは、どうやってテストをするのでしょう?どうやって、今行っている処理が正しいという安心を得られるのでしょう?
a.exe ⇒ ○.exe ⇒ b.exe ⇒ c.exe ・・・・・・
a.exe ⇒ △.exe ⇒ b.exe ⇒ c.exe ・・・・・・
a.exe ⇒ □.exe ⇒ b.exe ⇒ c.exe ・・・・・・
と順番にexeが呼び出されていくわけですが
a,b,c.exe は既存のものを使用して、○、△、□の部分を次々と作ってい作業多いので、一先ず既存の部分は実際動いているものなのでよしとして
プログラム作成者は自分で吐き出したファイルがしっかりリネームされる様プログラムを組む。
最後はフォルダの中身を確認し、リネームされていないファイルが無いか。という確認になりますね。
PGミスにより、とんでもないフォルダにファイルが作成された場合は見逃してしまう場合があります・・・orz

今回ツールを作る目的としては、自分が担当したものだけではなく、他の人が作成したファイルも正しくリネームされているか監視する為のものです。

> なんだか、作業の仕方を見直した方が良いのではないでしょうか。
はい。私も現在の作業のやり方には疑問な部分が沢山ありますが、いかんせん私はそれ程えらくありません(;^_^A
なので、自分で出来る範囲でいろいろ検討し、ツールを作っている訳です。

・・・と長文になってしまってすみません。m(__)m
また、説明が難しい部分は、はしょってしまっている部分もありますので、矛盾に感じる部分もあるかも知れません。m(__)m

はれるかな??
引用返信 編集キー/
■48757 / inTopicNo.18)  Re[6]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ ひろし (9回)-(2010/04/13(Tue) 23:09:48)
.SHO様
コメントありがとうございます。

No48719 (.SHO さん) に返信
> 地道に一覧を作ってはどうでしょう?
はい。ごもっともです(;^_^A
もっと根本的な所に問題がありますね(;^_^A
引用返信 編集キー/
■48758 / inTopicNo.19)  Re[7]: ファイルを作成したexeの名前が知りたいです。
□投稿者/ ひろし (10回)-(2010/04/13(Tue) 23:15:08)
Jitta on the way様
コメントありがとうございます。

No48746 (Jitta on the way さん) に返信
> 長文書いたけど、「品質 保証は使用できません」と怒られた。何でやねんorz

えっ?消えちゃったんですか??
残念です。orz

解決済み
引用返信 編集キー/
■48761 / inTopicNo.20)  Re[7]: ファイルを作成したexeの名前が知りたいです。
 
□投稿者/ .SHO (1284回)-(2010/04/14(Wed) 08:44:38)
No48757 (ひろし さん) に返信

>>地道に一覧を作ってはどうでしょう?
> はい。ごもっともです(;^_^A
> もっと根本的な所に問題がありますね(;^_^A

ですね。

>>地道に一覧を作ってはどうでしょう?

もしくは、実際に削除し忘れが発生したファイルに対してのみ
そのファイルを作成したEXEを特定し修正でもいいのでは?

話の内容から、何が何でも自動化した監視をする必要性を感じ取れません。
簡単に監視ツールが作れるなら話は別ですが。

解決済み
引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -