質問

サービスは、ユーザー・セッションでプロセスを作成するための簡単な方法がある場合は、

私は不思議でしたか?

私のサービスは、したがって、私は、WTSQueryUserToken機能を使用することはできません、ユーザー(管理者)アカウントとしてではなくローカルシステムACOUNTとして実行されてます。

私が呼び出し試してみました。

OpenProcessToken(GetCurrentProcess,TOKEN_ALL_ACCESS,TokenHandle);

しかし、私は実行するには、このトークンを使用する場合

 CreateProcessAsUser(TokenHandle,.....)

私のプロセスはまだセッション0で実行されています。 どのように私はこの問題を解決することができますか?

WINWORD(何らかの理由から、オレはそのプロセスを作成していないので - 私は本当にプロセスがある限り、それはセッション0ではない、上で実行されるセッションで気にしないように、

私は、OLEオートメーションを使用していますセッション0でのインスタンス)のために.exeファイルではなく、それは、他のユーザーセッションでそれらを作成します。

任意の提案は大歓迎だろう。 事前に感謝します。

役に立ちましたか?

解決

私はこの質問を見た人たちのすべてのために、感謝をこの問題を自分で解決することができました。

[OK]を、私は、上記のよう - トークンは、セッション0で実行されているプロセスに属する...

私が行っているので、何...セッション0で実行されていないプロセスのトークンを探しています。 あなたが取るときには、OpenProcessTokenのためのパラメータとしてプロセスIDです。

; CreateProcessAsUserは(そしておそらくあなたが選択したプロセスと同じcridentalsと)同じセッションでプロセスを作成するよりも それはバグを持っているので、それはスペースを(含まれているパスから作成されproccessesでは動作しません - QueryFullProcessImageName:

問題は、私は関数を使用して、プロセスの最も上の任意の詳細を取得していないということでしたCのような:インスタンスの\プログラムファイル) そして、私は推測している機能を備えた別の問題は、私は、ユーザーcridentalsを使用して、元のプロセスを実行しているので、私はローカルシステムアカウントを使用して実行しているプロセスの情報にアクセスすることができないということです。これは私が(それが新しい開かれたセッションを示しているので)私のプロセスとしてwinlogon.exeのを撮りたかったので、かなり悪いです。

また、そのトリックにsucceeedするためには、あなたはプロセスが高いセキュリティを求めることを可能にするために、システムのセキュリティを少しプレイする必要があります。 私はのために上昇を取得することを選択したことは次のとおりです。 SeDebugPrivilege - 実行中のプロセスに関する情報を見つけるための SeAssignPrimaryTokenPrivilege - 私は、ユーザー・セッション・プロセスから抽出されたトークンを使用して新しいプロセスを実行するために(すなわちexplorer.exeの) SeCreateTokenPrivilege - 私はそれが必要な場合は知らないが、それは、関連聞こえるので、私はとにかくそれをやった。

この権限を上げることに成功するために - あなたはランでこの特権のすべての関連するユーザーにプロセスを実行するユーザーを追加する必要があります>ローカルコンピュータポリシーの下でgpedit.mscを実行またはラン> secpol.msc(\コンピュータの構成\ Windowsの設定\セキュリティの設定\ LocalPolicies \ユーザー権利の割り当て)

(上記Previlegesとcompaitable)以下の権限にアカウントを追加します。
トークンオブジェクトの作成
プログラムのデバッグ
プロセスレベルトークン
を交換してください。

とそれはそれです! :) それは素晴らしいが取り組んできました! ところで、あなたは私はそれが関係されているかどうか知らない...すべてのUACのものを無効にしたいかもしれませんが、それは2008年より少ない苦痛で作業をしている - 。これ以上の迷惑なポップアップ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top