サービスからのタスクマネージャ起動制御について – プログラミング – Home

サービスからのタスクマネージャ起動制御...
 
通知
すべてクリア

[解決済] サービスからのタスクマネージャ起動制御について


GAL
 GAL
(@GAL)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

はじめまして。

VC++ラウンジへの投稿で良いのか悩みましたが、
投稿させて頂きます。

現在、タスクマネージャを制御するサービスを作成しています。
このサービスは、プロセスAが起動中の時のみタスクマネージャを
起動しない様にします。

プロセスAは、Windowsに登録されているアカウントの何れかで起動するため、
ちょっと乱暴ですが、サービスは、「HKEY_USERS」の全てのサブキー配下の以下の場所

「サブキー
\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr」

を書き換えれば良いかと考え、処理としては、

「RegEnumKeyEx」で「HKEY_USERS」の全てのサブキーを取得し、
「RegSetValueEx」で書き換える様にコーディングしました。

サービスを作成する前に、その処理だけを行うアプリを作成し実行した場合は、
想定する結果を得られたのですが、サービスに組み込むと、
「HKEY_USERS」のサブキー取得時に取得する値が「HKEY_USERS」のサブキーでは、
有りませんでした。

テストアプリのユーザとサービスのユーザが違う為に起こる問題だと
考えていますが、サービスのアカウントを変えずに行う方法が無いものかと、
悩んでおります。

どなたか、お知恵をお貸し頂けないでしょうか?

宜しくお願いいたします。

【環境】
Windows Vista Business
Microsoft Visual Studio 2005(VC++)

サービスのアカウント:LocalSystem
テストアプリ    :administrtor(管理者として実行を行いました。)


引用未解決
トピックタグ
かもねぎ
 かもねぎ
(@かもねぎ)
ゲスト
結合: 17年前
投稿: 61
 

タスクマネージャが起動しないとユーザに
どのような利点があるのでしょうか...


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

 タスクマネージャはかなり要のシステムサービスだから下手に加工すると
危険です。
 目的は何でしょうか?タスクマネージャの動作を制限するとなると
ウイルスワクチン(ノートン、ウイルスバスタ等)位のサービスプログラムを
作らないと無理じゃないかな?
 下手にレジストリーいじくるとウインドウが立ち上がらなくなる可能性があります。

 


返信引用
玲音 (st.lain)
 玲音 (st.lain)
(@玲音 (st.lain))
ゲスト
結合: 17年前
投稿: 89
 

仕様上の突っ込みなのですが、しかもよくありがちな。

> プロセスAが起動中の時のみタスクマネージャを起動しない様にします
タスクマネージャが起動済みだとして、その後にプロセスAが起動されたとしたら
それはサービスからタスクマネージャを殺す部分も必要になる、ということカナ。


返信引用
GAL
 GAL
(@GAL)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

ご連絡が遅くなり申し訳ございません。

かもねぎさん

ユーザに利点はないと思います。

ITOさん

「ウイルスワクチン(ノートン、ウイルスバスタ等)位のサービスプログラム」
と言うのが私にはちょっと想像がつきません。
すみません。スキル不足で。。
タスクマネージャの「DisableTaskMgr」以外をいじるつもりはないのですが、
それでも、ウインドウが立ち上がらなくなるものでしょうか?

玲音 (st.lain)さん

確かに、サービスからタスクマネージャを
終了する方法も考えなければならないですね。

皆様、御助言ありがとうございました。
もう少し考えてみます。
取り敢えず、クローズさせて頂きます。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

要するに、プロセスAの終了を何があっても阻止したいってことですよね。
やめといたほうが無難だと思いますよ。


返信引用
GAL
 GAL
(@GAL)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

こんにちは。
解決としてしまったのですが、
一応やりたい処理は完成したので、
ご報告いたします。

LocalSystemで動作するサービスでは、
なぜか、レジストリの「HKEY_USERS」の
サブキーは取得できませんでした。
特権の問題かなと思いますが。。(スキル不足でよくわかりません。。)

そこで、下記の様な流れで処理を行ったところ、
一応処理がうまくいきました。

(1)「C:\Users」配下のディレクトリ名取得。

※「C:\Users」配下のディレクトリ名は、そのまま、ユーザ名になっている想定。。

(2)取得したディレクトリ名を「LookupAccountName」でSIDに変換。
   この時、::GetLastErrorの値が「ERROR_NONE_MAPPED」の場合は、
   取得したディレクトリ名を除外します。

(3)変換したSIDを「ConvertSidToStringSid」でテキストのSIDに変換。

(4)テキストSIDをHKEY_USERSのサブキーとして、「DisableTaskMgr」を
   書込む。

目的とする処理は、できたのですが、
危険度合いも調べてみたいと思います。
また、皆様の御助言の通り危険には変わりないので、
別の方法での要件の実現も考えてみます。。
行いたいと思います。

御助言、有難う御座いました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました