2010-12-29 15 views
2

UACをオフにすることなくサービス(Windows7)からhandle.exe(sysinternalsから)を実行できますか?サービスから管理者アカウントを必要とするアプリケーションを実行する

このサービスは、アクセスしようとしているファイルをロックしているプロセスと、handle.exeを見つける必要があるカスタムc-appです。これを解決するには良い方法だと思われますが、 UACがオンになりました。このアプリは常に起動しているので、起動中にUACプロンプトを表示することはできませんが、起動時に表示される場合は問題ありません。

Handle.exeはadminコマンドプロンプトから正常に動作しますが、通常のプロンプトから実行しようとすると失敗します。

CreateProcess()からhandle.exeを呼び出し、パイプから出力を取得します。私はこれを解決する方法があるはずだと思うが、私はそれを理解することはできない。管理者アカウントからログインするようにサービスを設定することは機能していないようです。

+0

「管理者アカウントからログインするようにサービスを設定しても機能しないようです。」 - サービスがまったく起動しない、あるいは何らかの形でHandle.exe呼び出しが失敗する、という意味ですか? –

+0

私はそれが問題を解決しなかったことを意味します。 – Bergvall

答えて

1

UACはサービスに影響を与えません(インタラクティブセッションにのみ影響します)。

ただし、プログラム全体をサービスに移行したくない場合は、メインプログラムに加えて別のサービスプロセスの作成、インストール、および管理を必要としない、より良い方法があります。

  1. は、あなたのプログラムがまったく機能して管理者権限を必要とする場合、これは管理者権限を必要とするものとして、あなたはフラグあなたのプログラムを可能性(その埋め込まれたマニフェストリソースを経由して)、それは彼らが必要とする唯一の場所ではありません。実行されるたびに1つのUACプロンプトが表示され、Handle.exeを実行する機能を含む完全な管理者権限で実行されます。一方

  2. 、これはあなたのプログラムが管理者権限を必要とする唯一の場所である場合、それはあなたのHandle.exe呼び出しをラップするCOM DLL(またはその他の管理作業)を作成しても意味があり、あなたができるように、 UACを使用して、昇格していないアプリからその機能へのコールを昇格させます。そのCOMオブジェクトの(昇格バージョン)を作成するたびに、UACプロンプトが表示されます。必要に応じてCOMオブジェクトを開いたままにしておき、いつでも作成できます。そのため、UACプロンプトがいつ、どのくらいの頻度で表示されるかはあなた次第です。

どちらも1 & 2ので、UAC上の任意の良いドキュメントやチュートリアルでは、それらを詳細に行う方法を説明しますUACの標準用途です。

1

Win32 APIメソッドのCreateProcessWithLogonWを見るとよいでしょう。 また、VBSスクリプトの昇格もあります。http://technet.microsoft.com/en-us/magazine/2007.06.utilityspotlight.aspx

+0

Handle.exeを実行するたびにUACプロンプトが表示されませんか?問題は望ましくないと言います。あるいは、Handle.exeへの呼び出しだけでなく、プログラム全体を昇格させることを意味しますか?しかし、その場合は、そのマニフェストを介して管理者が必要とするプログラムにフラグを立てることができます。 –

関連する問題