問題タブ [openprocess]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
2529 参照

c# - x64 用にコンパイルされた C# の VirtualQueryEx でのオーバーフローの問題

CodeProjectで見たいくつかの記事に基づいて、C# で独自のメモリ リーダーを作成しようとしています。32 ビット Windows 用にコンパイルした場合はすべてが正常に動作しましたが、64 ビット ビルドに変換しようとしたときに問題が発生しました。

VirtualQueryExすでにMEMORY_BASIC_INFORMATION定義されており、BaseAddressメンバーがPVOID.

C# に移行しようとしたときMEMORY_BASIC_INFORMATION、ガイドとして使用している上記の CodeProject の例に示されているように、自分自身を定義する必要があります。

以下のコードはメモリ プロファイルが小さいアプリケーションでは機能しますが、大規模なアプリケーションでは、以下の変数がMI.BaseAddress2,147,356,672 に切り捨てられたように見え、プログラムは無限ループに陥ります。currentAddressMI.BaseAddress + MI.RegionSizeulong

ガイダンスをいただければ幸いです。ありがとうございました!

-

-

0 投票する
1 に答える
282 参照

java - Java 外部プログラムを開き、Java プログラムを閉じます

わかりました。閉じるたびに接続を適切に閉じるためのシャットダウン フックがあります。私が今しなければならないことは、別のプログラム(端末エミュレーター)を開いてから、端末エミュレーターを開いたままにして私のプログラムを閉じることです。エミュレーターを開くことはできますが、エミュレーターが閉じるまで Java プログラムが閉じません。何かを実行してプログラムを閉じるにはどうすればよいですか?

0 投票する
3 に答える
4509 参照

windows - OpenProcess: Windows 8.1 でのみアクセス拒否エラーが発生する

SeDebugPrivilege を調整し、システム プロセスを反復処理して OpenProcess を呼び出すプログラムがあります (その他の処理も行いますが、今は重要ではありません)。また、プログラムはもちろん管理者モードで実行されます。Windows XP および Windows 7では問題なく動作しますが、Windows 8.1 では、次のシステム プロセスで OpenProcess が ERROR_ACCESS_DENIED(5) で失敗します: smss.exe、csrss.exe、services.exe。私が SeDebugPrivilege で知っているように、これらのプロセスを開いて、それらのハンドルを取得できるはずです。Windows 8.1でのみこのエラーを引き起こす魔法の種類は何ですか?

(とにかく、CreateToolhelp32Snapshot の同じプロセスで同じエラーが発生します)

0 投票する
1 に答える
1846 参照

c# - C# ReadProcessMemory の代替

ReadProcessMemory特定のプロセスを実行しようとしていますがObRegisterCallbacks、別のプロセスがそのプロセスでハンドルを作成するのを防ぐために使用されます ( OpenProcess)。ReadProcessMemoryまたはを使用せずに C# で独自のメモリ読み取りユーティリティを作成している人を聞いたことがありOpenProcessます。素晴らしいライブラリを作成する方法を誰かに教えてもらえたら (または、既存のライブラリにリンクできれば)。

これは厳密にメモリの読み取りです。プロセスにメモリを書き込む必要はありません

0 投票する
2 に答える
477 参照

c++ - ユーザーがアプリケーションを終了した場合、Win32 C++ OpenProceess は null を返す必要がありますが、そうではありませんか?

EVENT_SYSTEM_FOREGROUND イベント (つまり、ユーザーがウィンドウを切り替えたとき) をキャプチャするためのフックをインストールしたプログラム (バックグラウンド プロセスとして実行) があります。フックに登録されているコールバックは、基本的に、ユーザーが切り替えたアプリケーション (プロセス exe ファイル名) と、切り替えたアプリケーションをログに記録します

切り替え元のアプリケーションがまだアクティブであるかどうかを確認するコードを追加したいと思います(そうでない場合は、アプリケーションを閉じており、それが新しいウィンドウを前面に表示したと仮定します)。OpenProcessを使用して以前のPIDへのハンドルを作成しようとすることで、その存在をテストしています

上記のコードでの仮定:
g_prevPid には PID が入力されています - この
prevProcStillRunning が true に初期化されていることを確認しました

上記のコードの問題は、ユーザーがアプリ (たとえば、notepad.exe など) を終了した場合でも、何らかの理由で発生することです。それらが終了してから最大 10 秒間、このテストは引き続きパスします (つまり、hPrevProc が初期化されます)。タスク マネージャーで Notepad.exe プロセスが消えたことを確認できますが (もちろん、開いているインスタンスは 1 つしかありません)、どういうわけか、OpenProcess 行はその PID のハンドルを取得できます。どういうわけかPIDは実際にはまだ存在していると推測していますが、終了している状態になっている可能性があります。このコードがさらに数回呼び出されると、最終的に null が返されることがわかりました。

hPrevProc がまだアクティブであるかどうかをテストできるより良い方法を見つけたいと思います。GetExitCodeProcess関数を使用してこれをテストしようとしましたが、これは単に PID を提供しているように見え、いずれにせよそれが正しいアプローチであるかどうかさえわかりません。

どんな助けでも感謝します。

0 投票する
1 に答える
1657 参照

c# - OpenProcess がエラー コード 6 (ERROR_INVALID_HANDLE) を返す

関数を使用して、実行中のプロセスへのハンドルを取得しようとしていOpenProcessます。ただし、エラー コードを確認すると、エラー コード 6 (ERROR_INVALID_HANDLE) が表示されます。

以下は縮小されたサンプルです。

なぜうまくいかないのか、よくわかりません。エラー コード 6 が返されるだけです。

アクセスしているプログラムが原因であると感じていますが、他のすべては正常に実行されており、他のエラーは返されません。