単二電池

Win10です
実際にExeファイルを起動した日時を取得する方法、教えてください
例えば、直近1か月間に
 ユーザが意識して起動したアプリ
 ユーザが無意識に起動したアプリ
 全く起動していないアプリ
を知りたいです

エクスプローラで 
 表示 ‐ 詳細 
を選び、「アクセス日時」を表示させると、EXEファイルを起動していないのに、毎回、
 当日の日時
になってしまいます
想像するに、Windows defender がアクセスしているためと思い、ウイルス検査の除外フォルダに指定してみましたが、症状は変わりません

ユーザがExeファイルを起動した日時を取得する方法、教えてください
よろしくお願いします

A 回答 (4件)

> 検索インデックスの作成ならば、Exeファイル以外のファイルの「最終アクセス日時」も当日になる気がしますが、こちらの方は2週間前のままですよ



私は、ファイルを網羅的に読むのは、ウイルスチェックと、検索インデックス作成くらいしか思い浮かばないので、そう書いています。検索インデックス作成のスキャンロジック・スキャンタイミングについては分かりません。
前回書いたように、それ以外の仕組みがあるのかも知れません(ちょっと想像付きませんが)。

> 例えばファイルがたった20あった場合でも、どのファイルが必要かの組み合わせは2^20=10^6通りあり

今開示されている情報からだけでは、何故そんなことが必要なのか全く分かりません。まあ、おそらく説明が難しいので書かれてないのでしょうが。
一般論だけでの回答の限界でしょうか。

> なお1回の動作確認には30分程度かかり、動作確認すべき基本動作は10種類あります。

それは大変そうですね。5時間か。
一般論だけで書くと、5時間やってその後にファイルのアクセス時刻が5時間以上前の物なら不要と判断で良さそうに思えます。あくまで「アクセスされてないものは不要と判断」という前提の元の話ですが。
何らかのサービスによる予想外のアクセスがあったとしても、アクセスされてないものはされてない訳なので。
    • good
    • 1
この回答へのお礼

何度も回答ありがとうございます
>今開示されている情報からだけでは、何故そんなことが必要なのか全く分かりません。まあ、おそらく説明が難しいので書かれてないのでしょうが。
確かに、
 全ての組み合わせをチェックせずに必要なファイルを特定する方法
はあります。が、いずれにしても膨大な数の動作チェックが必要ということです。

>あくまで「アクセスされてないものは不要と判断」という前提の元の話ですが。
さすが、鋭い指摘ありがとうございます。
そうなんです! アクセスされているのは必要なので、アクセスされていない物の中から(最近の6か月間の作業で)不要なファイルを見つけて外部HDDにバックアップすることがしたいわけです。
で、「アクセスされていないEXEファイル」を見つけることができないので、今回の質問となっています。

ちなみに、「最終アクセス日時」が半年以上前のファイルは30GBほどありましたが、これらを全て外部HDDにバックアップすると、おっしゃる通り、アプリは正常に動作しませんでした。

お礼日時:2024/08/12 06:45

>動後1時間ほどで、


> dir /ta *.exe 
> で最終アクセス日時は当日になりました。

おそらく、
「むしろ、検索インデックスの作成時でしょうか。」
が原因でしょうね。

> しかし直面しているアプリは膨大のファイル数(40万ファイル、5万1千フォルダ、45GB)の為、今回は無理なんです。

数が多いと無理という論理の飛躍が理解できません。
もしかして、Explorerから手動で1ファイルずつリネームするようなことを考えたのでしょうか?普通はそんなことはせずにプログラムを書いてリネームします。

> 実際に使用するのは当該アプリのごく一部なので、「最小インストール」というオプションがあれば良いのですが、当該アプリにそのような「最小インストール」がないので、45GBという巨大なシステムになっています。

・対象は1つのアプリで、多数のEXEから構成されている
・ディスク容量を減らしたいので、ファイルを消したい
が本来のニーズでしょうか?
そういう場合は、アプリ開発元に相談するのでしょうね。

どうしても自力でやりたい場合は、状況によっては、検索インデックス作成サービス自体を止めてしまっても良いかもしれません。
services.msc で、「Windows Search」を無効にする。そうするとユーザー操作に依らないファイルアクセスは起こらなそうな気がします。うっかり検索したり、プロパティー見たりするとアクセスしちゃいますが。
ただ、他にも私のよく知らないサービスがあって、アクセスが発生する可能性もありますが、とりあえず上記を無効にして1-2日後に様子を見る。
    • good
    • 0
この回答へのお礼

再度の回答ありがとうございます

>おそらく、
>「むしろ、検索インデックスの作成時でしょうか。」
>が原因でしょうね。
そうなんですか?
検索インデックスの作成ならば、Exeファイル以外のファイルの「最終アクセス日時」も当日になる気がしますが、こちらの方は2週間前のままですよ

>数が多いと無理という論理の飛躍が理解できません。
例えばファイルがたった20あった場合でも、どのファイルが必要かの組み合わせは2^20=10^6通りあり、全ての場合を尽くすのはほぼ不可能です。実際は40万ファイル、EXEファイルだけでも1000は下らないのでもっと大変です。
なお1回の動作確認には30分程度かかり、動作確認すべき基本動作は10種類あります。

>もしかして、Explorerから手動で1ファイルずつリネームするようなことを考えたのでしょうか?普通はそんなことはせずにプログラムを書いてリネームします。
まさか(苦笑)そんなことしませんよ。

>そういう場合は、アプリ開発元に相談するのでしょうね。
・・・・

>どうしても自力でやりたい場合は、状況によっては、検索インデックス作成サービス自体を止めてしまっても良いかもしれません。
提案、ありがとうございます

ちなみに、動作確認作業のごく1部の5分間程度のファイルアクセス記録をprocessing_systemで書き出したら3GB程度のログができて、それを分析して、孫請けしているEXEファイルや中間ファイルの作成、データファイルの読み込みなど、処理に必要なファイルのごく一部を明らかにしたことがあります。でもこの方法では、どのファイルが(最近の6か月間の作業で)不要であるのかは、判断できませんのであきらめました。

お礼日時:2024/08/11 21:49

> dir /ta *.exe


> でも最終アクセス日時は当日になります
回答に書いたように、ファイルを読むような表示項目をExplorerに追加していればすでにアクセス日時は更新されています。そういうことをしないようにすれば良いかと思います。

Windows Defenderは、手動で「フルスキャン」とかしない限りは、一般のexeファイルを読まないと思いますよ。

むしろ、検索インデックスの作成時でしょうか。デフォルト設定ではexeのプロパティーも検索インデックスの対象のようなので、検索インデックス作成プログラムにexeは読み込まれてます。
https://faq.nec-lavie.jp/qasearch/1007/app/servl …
に、「検索対象の拡張子を追加する」手段が書いてありますが、この管理画面でexeのチェックを外せば、検索インデックス作成プログラムがexeを読むことは無くなるんじゃないですかね(確認してませんが)。

> ユーザが意識して起動したアプリを指定すると、そのアプリから間接的に起動されたアプリのリストを調べる方法ありますか?

これは、前回書いた、
・自作アプリならそういう記録を残す処理を追加する
・OS自体は「別プログラムを起動した」ことは把握しているので、それを記録に残すような設定があるのなら、そうする(未調査)
・(追加)企業用の監査目的のプログラムなら可能かも(未調査)

> 対象となる全てのexeファイルからこれらのリストのexeファイルを取り除くことで「全く起動していないアプリ」があぶりだしたいのです。

やりたいことがよくわかりません。
私なら、「これ使ってないexeでは?」と思えば一旦リネームとか別フォルダーに移動して起動できなくして、問題が出れば戻します。
企業などのPCで「そんな業務が止まるかも知れないリスクは侵せない」ということであれば、上記の監査系のプロダクト導入検討ですかね。必要ならOSをHOME版からProやEnterpriseにする。
    • good
    • 0
この回答へのお礼

再度の回答ありがとうございます

>回答に書いたように、ファイルを読むような表示項目をExplorerに追加していればすでにアクセス日時は更新されています。そういうことをしないようにすれば良いかと思います。
ご心配いただき恐縮です。当然、Explorerにより「最終アクセス日時」が更新されたフォルダ以外でも、 dir /ta *.exe で最終アクセス日時は当日になりました。

>Windows Defenderは、手動で「フルスキャン」とかしない限りは、一般のexeファイルを読まないと思いますよ。
私も当初そのように理解していましたが、2週間ぶりに電源を入れたノートPCでも、PC起動後1時間ほどで、
dir /ta *.exe 
で最終アクセス日時は当日になりました。

>やりたいことがよくわかりません。
>私なら、「これ使ってないexeでは?」と思えば一旦リネームとか別フォルダーに移動して起動できなくして、問題が出れば戻します。
ファイル数が少なければおっしゃる方法が確実と私も思います。
しかし直面しているアプリは膨大のファイル数(40万ファイル、5万1千フォルダ、45GB)の為、今回は無理なんです。

実際に使用するのは当該アプリのごく一部なので、「最小インストール」というオプションがあれば良いのですが、当該アプリにそのような「最小インストール」がないので、45GBという巨大なシステムになっています。
そこで、(仮想メモリのような感じに)
 直近6か月間に未使用のファイルは外付けHDDにバックアップ
してCドライブを空けようと画策しているところです

お礼日時:2024/08/11 15:54

標準で表示される「名前」「更新日時」「種類」「サイズ」に「アクセス日時」を追加しただけでなく、他の項目も追加していませんか?


例えば、「ファイルバージョン」はファイルを読まないとわからないので、この項目を追加するとexeファイルは読まれるようで、「アクセス日時」が更新されます。
(読んで取得した情報はキャッシュされるようで、表示する度に毎回対象ファイル全部を読むわけではなさそうですが)

コマンドプロンプト画面を開いて、

pushd 目的フォルダーのフルパス
dir /ta *.exe

で、最終アクセス日時が表示されます。dirコマンドだとファイルの中味を読まないので大丈夫です。

ただ、最初に書いたように実行した時以外でもファイルは読まれるので、最終アクセス日時を使うのでは目的を果たせないでしょう。

対象が自作プログラムなら、ログを書くような処理を追加するくらいですかね。さすがに「意識して起動した」「無意識で起動した」の区別は無理ですが。

自作以外も含めたexeの実行記録だと、グループポリシーエディターのセキュリティー設定あたりでなにかすると、イベントログに記録を残せるかも知れませんが、調べたこと無いので、出来るかどうか含めて分かりません。
    • good
    • 1
この回答へのお礼

応答ありがとうございます

dir /ta *.exe
でも最終アクセス日時は当日になります

「最終アクセス日時」はエクスプローラやWindows defender も含めた全てのアクセスした最終アクセス日時を記録するので、
「ユーザがExeファイルを起動した日時」
は記録されていないということでしょうかね

グループポリシーエディターですか。Win10 home なので使えませんね・・

ということは、
「ユーザがExeファイルを起動した日時」を手掛かりに「全く起動していないアプリ」をあぶりだすのは無理ということのようですね

別の質問になってしまいますが、
ユーザが意識して起動したアプリを指定すると、そのアプリから間接的に起動されたアプリのリストを調べる方法ありますか?
(閉じて、新な質問を立てるべきかしら?)

対象となる全てのexeファイルからこれらのリストのexeファイルを取り除くことで「全く起動していないアプリ」があぶりだしたいのです。

引き続き、回答、よろしくお願いします

お礼日時:2024/08/11 07:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A