この問題を解決するにはどうすればよいですか? コードは 32 ビット コンピューターでテストしたところ正常に動作しましたが、私の 64 ビット コンピューターは getlasterror(); でそのエラーを返しました。
これを修正するにはどうすればよいですか?
あなたのターゲットプロセスは、「任意のCPU」用にコンパイルされた管理対象の実行可能ファイルであると推測します...
その場合、その exe を 64 ビット Windows で起動すると、64 ビット コードに JIT コンパイルされるため、64 ビット プロセスになります。
その後、32 ビット プロセスから CreateRemoteThread を呼び出すことはできません。
32 ビット Windows で起動された同じマネージ exe は、32 ビット コードに JIT するため、機能します。
その場合、問題のマネージド exe の作成者は、x86 用に再構築します。
部分的な情報:
Win2000 で作業していたCreateRemoteThread
ときは、別のターミナル サーバー セッションに属するプロセスでリモート スレッドを開始した場合を除いて、すべて正常に動作していました。Win2003 (およびそれ以降) では、すべてのシステム プロセスは、現在ログインしている対話型セッションとは異なる TS セッション 0 で動作します。その時点では、TS セッション境界の問題を解決できませんでした。これは、最初に確認する必要がある場合があります。
これは 32/64 ビットの問題ではなく、特別な特権やアクセス許可を必要とする何らかのセキュリティ上の問題である可能性が高くなります。