2011-12-08 14 views
13

可能性の重複:
How do I tell if a win32 application uses the .NET runtime".exe"プロセスがC++またはC#で書かれているかどうかを知る方法?

特定の ".EXE" プロセスは、C++(アンマネージコード)またはC#(マネージコード)で書かれていた場合は、手動で認識するための方法があります?

+2

私はすでにプロセスエクスプローラがそれを行うので、方法があると言うことができます。さて、我々はどのようにして見つける必要があります:p –

+0

[反射鏡] [1]でexeを押して、何が起きているか調べてみてください。 [1]:VB.NETで書かれたプログラムが生成するhttp://stackoverflow.com/questions/214764/best-free-decompiler-for-c-sharp-with-vs-integration – jp2code

+1

注C#で書かれたものと同じ "実行可能な"タイプのものであり、アンマネージドアプリケーションの作成に使われたものだけを推測することができます。言及した他のものと同様に、管理されていないコードと管理されていないコードを区別することができます。 –

答えて

8

あなたはプロセスは、.NETプロセスであるかどうかを判断しようとしている場合、私はデイブ・ヴァン・デンEyndeの答えからインスピレーションを得たソリューションを提案することができますこのトピックの内容は次のとおりです。How do I tell if a win32 application uses the .NET runtime

"実行するにはmscoree.dllが必要な場合、アプリケーションは.NET実行ファイルです。"

この場合、プロセスのモジュールをチェックして、mscoreeがリストされているかどうかを確認します。

 foreach (var process in Process.GetProcesses()) 
     { 
      if (process.Modules.OfType<ProcessModule>().Any(m => m.ModuleName.Equals("mscoree.dll", StringComparison.OrdinalIgnoreCase))) 
      { 
       Console.WriteLine("{0} is a .NET process", process.ProcessName); 
      } 
     } 
+0

"mscoree.dll"はC#のマネージコードbinnaryのメインdllリソースですか?同じdllを使用するC++バイナリがないと信じてもいいですか? – Diogo

+0

これは管理ライブラリではありませんが、このDLL内のすべてが.NET Frameworkに関連しています。プロセスが純粋な.NETアプリケーションであるという保証はありませんが、少なくとも.NETコードをホストしています。たとえば、Microsoft Wordで.NETアドインを読み込むと、Wordは.NETアプリケーション単独ではなくても、このDLLがモジュールに表示されます。 –

+1

この方法でチェックすると、C#で書かれたコンソールアプリケーションが管理されたアプリケーションとして表示されないのはなぜですか? – stt106

2

ファイルには、Visual Studioのコマンドライン環境で使用できるpeverifyまたはildasmを実行できます。管理されていないコードの場合は、エラーが表示されます。これは、ILを暗号化してCLRブートローダを隠す保護システムを使用する場合には失敗しますが、ほとんどのプログラムではこの保護機能はありません。ここで

1

それは、.NET .exeファイル(またはそのことについての.dll)なら、それはあなたがDependency Walkerまたは類似した何かでそれを調べることによって見ることができるにmscoree.dllへの依存性を持つことになります。

プログラマチックに行う場合は、this VB projectを開始点として使用できます。

これは確かにあなたの言語を教えてくれません。 VB.NET(または他の.NET言語)プログラムまたはC++(または他の.NET言語以外の言語)からC++に伝えることはできません。一方または他方を唯一の言語として使用するか、またはどちらか一方をもっと可能性のあるものにすることができるいくつかのことがあります。 mscoree.dllをいくつかの奇妙な方法で使用している管理されていないコードも存在する可能性があります。

関連する問題