• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:実行中のプログラムIDが取得できない)

ウイルスソフトが動作を占拠して長い間パソコンが動かない対策

chie65535の回答

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8547/19427)
回答No.2

>アクセス権とか何か制限がかかって取得できないのでしょうか? 比較に成功しているなら、権限を獲得せずに実行しているのが原因です。 大事な事を言い忘れてましたが、呼び出し側がデバッグ権限を持たない場合、PROCESS_ALL_ACCESSは常に失敗します。 なぜなら、呼び出し元がデバッガでもない限り「すべての権限を持っている事は無い」からです。 OpenProcessの第1引数には「やりたいことだけ」を指定します。 つまり、今回ならPROCESS_TERMINATEのみを指定します。 また、対象プロセスがシステムプロセスとして起動されACEからPROCESS_TERMINATEを削除している場合、OpenProcessにPROCESS_TERMINATEのみを指定しても、やはり失敗します。相手がPROCESS_TERMINATEを持っていませんから。 まず、PROCESS_TERMINATEのみを指定してOpenProcessを試み、失敗した場合は、自身のDACLを昇格させ、以下ページの方法により「デバッガのフリをさせる」必要があります。 http://support.microsoft.com/kb/131065 自身を昇格(デバッガ化)させたら、もう一度、PROCESS_TERMINATEのみを指定してOpenProcessを試み、それでも失敗した場合は、本当にプロセスが開けないので諦めます。 開けた場合は、TerminateProcessを試みますが、OpenProcessにて取得したプロセスハンドルがPROCESS_TERMINATEを持たない場合、TerminateProcessは失敗します(が、それは有り得ません。だって、PROCESS_TERMINATEを持ったプロセスハンドルが直前でOpenProcess出来てる筈なので、TerminateProcessは必ず成功する筈です) あと、TerminateProcessは、プロセスを「その場で強制終了する」ので、終了させられたプロセスが持っていた外部リソースがリークする可能性があり、あまりお薦め出来ません。 特権の取得とか関わって非常に面倒なので、作るの頑張って下さい。 以下蛇足。 FFFFってw 確かにそうだけど、覚え易くて忘れないのでIDに使ってます。

7777777v
質問者

補足

再三の回答、感謝します。 ソース行が長くなっていますが、頑張ってみます。 デバッグでのアクセスでしか開放しないのですね。 強制終了でリソースを放棄しては困ります。メモリーは再起動で解決しますが、ccsvchst.exeはどのようなリソースを使っているでしょうか? また、終了による弊害でファイルを開きっぱなしとか、起こり得る弊害があれば教えてください。 今までにタスクマネージャーの終了ボタンで何度か終了させていますが、不具合は確認していません。仮にシステムが不安定になれば再起動で解決できるという問題ではないのでしょうか? よろしくお願いします。

関連するQ&A

  • A.exeをCreateProcessで呼び出します。A.exeから呼

    A.exeをCreateProcessで呼び出します。A.exeから呼び出し元のB.exeのProcessIDの取得方法 B.exeがA.exeを起動しB.exeは非表示(ハイド)になります。 A.exeのハンドルとProcessIDはActiveWindow()等で取得可能ですが、 この状態でA.exeがB.exeのProcessIDを取得することは可能でしょうか? 呼び出されたA.exeから、呼び出し元のB.exeのプロセスID又はハンドルの取得方法について教えてください。 よろしくお願いいたします。

  • 異なるプロセス間でのイベントハンドルの共有

    異なるプロセス間でのイベントハンドルの共有 WIN32 APIのDuplicateHandleを用いて、異なるプロセス間でのイベントハンドルを共有したいのですが、うまく動作しません。(1)~(3)にプログラムの詳細を示します。 (1) プロセスAで「本物」のプロセスハンドルを取得   DuplicateHandle(     GetCurrentProcess(),         GetCurrentProcess(),    // 疑似ハンドル     GetCurrentProcess(),     &RealProcessHandle,     // 本物のハンドル     0,     FALSE,     DUPLICATE_SAME_ACCESS   ); (2) プロセスAでイベントを作成   hEvent = CreateEvent( NULL, FALSE, FALSE, NULL ); (3) プロセスBでイベントハンドルを複製   DuplicateHandle(     RealProcessHandle,     // プロセスAが(1)で取得した本物のハンドル     hEvent,           // プロセスAが(2)で取得したイベントハンドル     GetCurrentProcess(),     &hNewEvent,         // プロセスBで利用するためのイベントハンドル     0,     FALSE,     DUPLICATE_SAME_ACCESS   ); 上記のプログラムを実行すると、(1)と(2)は成功するものの、(3)の時点でエラーになり、 GetLastErrorでは6(ハンドルの異常)が表示されます。 プログラムのどこが悪いのでしょうか? 尚、OpenEventによるイベントハンドル共有は、 イベントに名前をつけなくてはならない問題があり、利用しない方針です。

  • WMICでリモートでバッチが実行できない

    こんにちは。お世話になります。 Windows7Proのコマンドプロンプトで、 wmic /node:"ノード名" /user:"ドメイン名\administrator" /password:パスワード PROCESS CALL CREATE "cmd.exe バッチファイル.bat" として、接続先のノード(同じくwindows7pro)でバッチを実行したいのですが、うまく動作しません。 実行すると、 (Win32_Process)->Create()を実行しています メソッドが正しく実行しました。 出力パラメーター instance of __PAREMATERS { ProcessId = 2280; ReruenValue = 0; }; と表示されるので、接続先のノードでプロセスID2280を調べると、確かにプロセスが存在するのですが、 動作していないようなのです。 試しに、その接続先のノードで、コマンドプロンプトを立ち上げ、 wmic PROCESS CALL CREATE "cmd.exe バッチファイル.bat" と記述してみると、正常に動作しました。 動作しないのはどのような原因が考えられるでしょうか? なんとか動作させたいのです。 何卒ご教授お願いいたします。

  • 変なプログラムが動いています

    こんにちは! さっそく質問なのですが、タスクマネージャのプロセスにopdcv.exeというのがあって、パソコンの電源を切るときに、これが「終了していません」というメッセージがでます。 これは何なのでしょうか??動いてると危険な類のものですか?? 当方パソコン初心者です。わかりやすいご回答をお願いします。

  • パソコンを閉じるときこのプログラムは応答していませんと出る

    パソコンを閉じようとするといつも2、3回このプログラムは応答していませんというのが出てきます。そのうちのひとつにmyAgtTry.exeという名前の知らない、開いた覚えのないプログラムがあります。 また、ctrl+Alt+Delでwindowsタスクマネージャを開くと、プロセスのところにイメージ名myAgtTry.exeというのがあり、これなんだなと思いましたが、いったいこのプログラムはなんなんでしょう? パソコンの反応速度が遅いのと何か関係してるんでしょうか? このプログラムのせいで、反応速度が遅くなっているとしたら、開きたくないです。windowsタスクマネージャでプロセスの終了を押しちゃってもいいのでしょうか?

  • ウィルスにより作成されたプログラムの削除について

    Windows XPを使用しています。 Norton Antivirusのliveupdateを実行した後、全システムのスキャンを実行しましたが、「脅威は見つかりません」というレポートでした。 しかしながら、タスクマネジャーのプロセスの中には、Isass.exe NMain.exe winlogon.exe spoolsv.exe など、トロイの木馬が作ると言われるプログラムが未だに存在し、プロセスを終了しようとしてもできません。 これらを終了し、PCから完全に削除する方法をご教授ください。 よろしくお願いします。

  • アクセスが拒否されるプロセス

    Norton関係の「ccApp.exe」「ccSvcHst.exe」などのプロセスをタスクマネージャやProcess Explorerなどで終了しようとすると「アクセスが拒否されました。」となり、終了できません(Administratorでも)。 C言語でTerminateProcessをコールしても同じです。 Administratorでも「拒否」されるということは、何によってアクセスが妨げられているのでしょうか。また、このような設定はどのような仕組みで行われているのでしょうか。 Nortonを強制終了することに意味があるわけではないのですが、なぜ終了できないのか知りたいです。

  • PC起動時に特定のプロセスが起動しないようにしたい

    PCにはそこまで詳しくない者です。 近年、パソコンがウィンウィンうなりっぱなしなので、タスクマネージャでいくらか調べてみた所、 iexplore.exeというプロセスが2つ起動していて、それらひとつひとつがCPU使用率約50%分となっており、合計でCPUを100%分占めていたことが分かりました。 それらふたつを「プロセスの終了」してもパソコンの動作に何の不具合もないため、パソコン起動時に毎回タスクマネージャを開いてプロセスの終了をしているのですが、億劫で仕方ありません。 かといって、「ファイル名を指定して実行」→「msconfig」→「スタートアップ」を見ても、iexplore.exeは見つからないので、どうすることもできません。(「全てのプログラム」→「スタートアップ」も同様です。) どうすれば、これらのプロセスを起動させないようにすることができますか。 (ここから先は、回答はして頂かなくても構いません。) また、以下は、CPU使用率ではなくメモリ使用率が高めのプロセスで、かつ「プロセスの終了」をしてもパソコンの動作に支障が見られないものですが、これらもスタートアップから外す術はないのでしょうか。 wuauclt.exe SfCtlCom.exe AppleMobileDeviceService.exe IMJPCMNT.EXE xfdire.exe UfSeAgnt.exe spoolsv.exe. Tmproxy.exe msiexec.exe nvsvc32.exe

  • 見たこと無い実行ファイルがCPUを使用しています・・・

    最近、特にCPUを使うものを起動していないにもかかわらず、パソコンの動作が遅いときがありました。 タスクマネージャのプロセスで確認したところ、「yupdaterj.exe」というものが起動しており、最大で40%近くCPUを使用していました。 普通の実行ファイルと違い、タスクマネージャのプロセス上から出たり消えたりしていました。 気にしなくていいものか、どうにか対策を取らなければいけないものか悩んでおります。 どなたか知っている方が居ましたら教えてくださいませ ちなみに、私のパソコンはWindowsのXPでCPUはペンティアム4の2.80GHzです。

  • vistaのプロセスについて

    つい先日NECのwindows vista搭載 PC-LL750HGというノートパソコンを購入したのですが、タスクマネージャのプロセスに同じものが2つないし3つ実行されているものがあります。 Ati2evxx.exe ccSvcHst.exe CLI.exe csrss.exe などです。 今のところ問題はありませんが少し気になりました。 誰かお解りになる方がいたら回答をお願いします。