問題タブ [createprocessasuser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
557 参照

c# - CreateProcessAsUser、dll関数を呼び出します

CreateProcessAsUserを使用すると、ハードディスクのどこかに.exeファイルを呼び出すことができます。

私がWebで見つけたそれぞれの例では、lpCommandLine引数を使用してプログラムを呼び出しています。dllの関数を呼び出したいのですが。これが可能かどうか誰かが知っていますか?ある種の例があるといいでしょう...

ありがとうございました!

0 投票する
1 に答える
1826 参照

iis-7 - サービスからのユーザー セッション (0 以外) の CreateProcessAsUser (IIS 7)

私の設定は次のとおりです。

  • Windows Server 2008、IIS 7

私が達成したいこと:

  • IIS 7 は私の Web サイトからいくつかの 3D 操作を (WPF で) 実行する要求を受け取り、最終的に IIS 7 はイメージをレンダリングし、それをディスクのどこかに保存して Web サイトにロードする必要があります。

私が知っていることと、すでにテストしたこと:

  • IIS 7 は、Windows Server 2008 のセッション 0 でサービスとして実行されます
  • セッション 0 のサービスはビデオ ドライバーにアクセスできません。つまり、セッション 0 のサービスはレンダリング タスクを実行できません (ここで説明:セッション 0 分離)
  • Microsoft は別の論文で、レンダリングを正常に実行するために (CreateProcessAsUser によって) ユーザー セッションでプロセスを作成することを提案しています。

私が今までに達成したこと:

  • LogonUserはうまく機能します
  • CreateProcessAsUser はうまく機能します

機能しない唯一の (しかし重要な) 部分: ユーザー名とパスワードでログオンし、ユーザーとしてプロセスを作成すると、プロセスはまだセッション 0 にあるため、レンダリングが失敗します。ユーザーは正常にログオンしました(確認しました)。Microsoft によれば、(セッション 0 ではなく) ユーザー セッションでプロセスを作成できる必要があります。

  • 0 以外のセッションでユーザーとしてプロセスを作成するにはどうすればよいですか?
  • 自分で新しいセッションを作成する必要がありますか?

ありがとうございました!

私のコード:

0 投票する
2 に答える
2520 参照

windows - WindowsSYSTEMユーザートークンを取得する方法

オペレーティングシステムは、UACが有効になっているWindows7以降です。呼び出しプロセスには管理者権限があり、UACボックスですでに確認されています。

ユーザーSYSTEMの下に新しいコンソールウィンドウ(cmd.exe)を生成したい(理由は聞かないでください)。SysinternalsなどのPsExecツールを使用してインタラクティブにこれを行うことができますが、ソースコードがないため、これがどのように機能するかを理解する必要があります。

CreateProcessAsUser()を呼び出す必要があり、最初のパラメーター(hToken)をNULLに設定すると正常に機能することを理解していますが、hTokenを取得する方法を知る必要があります。LogonUser()を呼び出すことでそのようなトークンを取得できることは理解していますが、SYSTEMでは取得できません。SYSTEMのトークンを取得するにはどうすればよいですか?

DuplicateTokenEx()を使用することを考えましたが、これには元のトークンが必要であり、持っていません。

プロセスリストをクエリし、SYSTEMプロセスを見つけて、そのトークンを複製するか何かを試みる必要がありますか?PsExecツールまたはこれを正確に実行している他のツールの1つをリバースエンジニアリングしたくありません。

0 投票する
1 に答える
5990 参照

c++ - CreateProecssAsUser 昇格された特権?

CreateProcessAsUser 関数でエラーが発生します。「要求された操作には昇格が必要です」と表示されます。できる限り最高の権限を与えたと思いました。誰か助けて?ありがとう

私のコードは次のとおりです。

0 投票する
1 に答える
50 参照

c++ - プロセスが実行される前にスレッドを完了させたい

CreateProcessAsUser()User( )として、ユーザー画面でアプリケーションを起動するプロセスを作成しています。アプリケーションを起動する前に、どういうわけかユーザーの画面で関数を実行する必要があります。私の考えはここに私の機能を入れることでしたが、これはすでにアプリケーションを起動したCreateRemoteThread()後に起こります。誰かアドバイスはありますか?CreateProcessAsUser()ありがとう

0 投票する
1 に答える
6429 参照

vb.net - SYSTEMとして実行されているvb.netアプリケーションを使用して、ログオンしているユーザーごとに分離プロセスを開始するにはどうすればよいですか?

このトピックに関する数週間の調査の後、私はついに自分のスレッドを開始することにしました。経験のある人が助けてくれることを願っています。私はそこにあるさまざまなコーディング例を理解しようとしてインターネットを精査しましたが、実用的なソリューションをまとめようと試みました。いくつかの背景から始めましょう-

背景:
CA IT Client Manager(ITCM)を使用して組織内のWindowsServerおよびPCに配信されるvb.netアプリケーションがあります。Microsoft SCCMと同様に、CA ITCMには、各PCでSYSTEMとして実行されるエージェントサービスがあります。したがって、アプリケーションがターゲットPCで配信および実行されると、「NT Authority\SYSTEM」コンテキストで実行されます。

問題:
アプリケーションの初期段階で、ログインしている各ユーザーのコンテキストで実行されているプロセスがあり、停止する必要があります。アプリケーションの実行の最後に、ログオンしているユーザーごとにこのプロセスを再開して、ユーザーがログオフして再度ログオンする必要がないようにする必要があります。私が停止しているプロセスは、実際にはユーザーがデスクトップで操作できるシステムトレイプロセスです。

VB.NETソリューションの追跡:
インターネットで延々と調査していると、ログオンしている各ユーザーのパスワードを取得したり、ユーザーに資格情報の入力を求めたりしない限り、この問題に対するネイティブの.NETソリューションはないようです。これは私にとってオプションではないため、ログオンしているユーザーの資格情報を知らなくても、必要とせずにプロセスを開始する方法を見つける必要があります。

この方法を調べて、CreateProcessAsUserWindowsAPI関数にたどり着きました。私が理解していることから、私はこれらの線に沿って何かをすることができます-(以下を参照)

注:
VB.NETでWindowsAPIへのアンマネージコード呼び出しを使用するのはこれが初めてです。さまざまな投稿からコードをつなぎ合わせたため、定数、列挙、関数宣言には多くのあいまいさがあります。これらの宣言のいずれかに誤りがある場合は、お知らせください。データ型を別の型として「マーシャリング」する必要がある場合について、多くの質問があります。注意深く読んでください!!

同様の投稿から数え切れないほどの例があったので、CreateProcessAsUserページのMSDNの例に従おうとしました。

MSDNリンク: http:
//msdn.microsoft.com/en-us/library/windows/desktop/ms682429 (v = vs.85).aspx

リンクの例:http:
//msdn.microsoft.com/en-us/library/windows/desktop/aa379608 (v = vs.85).aspx

各WindowsAPI呼び出しの有効性を確認することに加えて、操作の全体的な順序を確認し、これを複雑にしすぎているか、何かが不足している可能性があるかどうかを知らせてください。Microsoftの例から実装していない唯一のコードは、各SIDにインタラクティブWindowsステーションへのフルアクセスを許可し、続いてSIDにインタラクティブデスクトップへのフルアクセスを許可することです。私は間違っているかもしれませんが、各ユーザーはすでにインタラクティブデスクトップにアクセスできるはずです。

結果:
現在、管理者アカウント(ローカルマシンでVisual Studio 2010からソリューションを実行)から、およびITCM(ローカルマシンでSYSTEMアカウントから実行)を介してアプリケーションを配信することにより、LaunchProcess関数の呼び出しをテストしています。どちらの場合も、指定されたプロセスをユーザーセッションで開始しますが、次のエラーが発生します。

「アプリケーションを正しく起動できませんでした(0xc0000142)。[OK]をクリックしてアプリケーションを閉じてください。」

誰かが私のコードを確認して、正しい方向に向けてくれることを願っています。それ以外の場合は、ここで何がうまくいかないのかをデバッグする方法についてアドバイスしてください。

事前にすべての入力に感謝します。

0 投票する
1 に答える
234 参照

database - サービスからの CreateProcessAsUser には、リモート マシンへのアクセスにセキュリティ上の問題があります

ローカル (リモート) データベースをサーバー上の集中型統合データベース (Sybase データベースを使用) と同期しようとしています。同期はスケジュールされた時間に行われる必要があり、「CreateProcessByUser」を使用しています。同期プロセスを開始するために、sybase が提供する dbremote.exe を使用しています。

構築された commandLine 引数は次のとおりです。
commandLine = dbremote.exe -l 512K -x -k -c "dsn=HOME* * ;uid=dba;pwd= ***;cs=none;DBKEY= ***" -os 10000000 -o "c:\data\test\dbremote.log" "c:\data\test"

プロセスはリモート マシンで実行され、同期が発生すると、リモート データベースと統合データベースの間でメッセージが交換されます。

Windows コマンド プロンプトから上記のコマンドラインを実行すると、同期が正常に機能します。しかし、スケジュールされた時間に CreateProcessAsUser によってトリガーされると、ログ ファイルに次のエラー メッセージが表示されます。

ログファイル:

I. 2013-04-11 11:17:11。"BTI"
I. 2013-04-11 11:17:11 にメッセージを送信しています。soopen "\\IPaddress\Databases\Production\messages\consolid\Rem00005.g" 失敗 1326: 無効な引数
I. 2013-04-11 11:17:11。soopen "\\IPaddress\Databases\Production\messages\consolid\Rem00005.h" 失敗 1326: 無効な引数
I. 2013-04-11 11:17:13. soopen "\\IPaddress\Databases\Production\messages\consolid\Rem00005.i" 失敗 1326: 無効な引数
I. 2013-04-11 11:17:13。soopen "\\IPaddress\Databases\Production\messages\consolid\Rem00005.j" 失敗 1326: 無効な引数
I. 2013-04-11 11:17:13. soopen "\\IPaddress\Databases\Production\messages\consolid\Rem00005.k" 失敗 1326: 無効な引数
E. 2013-04-11 11:17:
I. 2013-04-11 11:17:13。再送信要求がキューに入れられています
I. 2013-04-11 11:17:14. 実行完了

"\\IP address\Databases\Production\messages\consolid" は、リモート マシンからのメッセージがコピーされるサーバー上のフォルダーです。

これについてあなたの助けを求めます。コマンド プロンプトからは同期でき、'CreateProcessAsUser' からは同期できないのはなぜですか? プロセスがサーバー上の上記のパスにメッセージを送信できないのはなぜですか。

私がすでに試したいくつかのこと:

  1. Windows ドメイン名と資格情報を使用して、コードで ::LogonUser() を使用してアプリにログインしています。有効な資格情報を送信していることを再確認しました。

  2. エクスプローラーを使用して、サーバー上の上記のパスに正常に移動し、ファイルを追加/削除できます。

  3. [管理ツール] >> [ローカル セキュリティ ポリシー] の下の [ローカル セキュリティ設定] にユーザー ID を追加しました。

任意の提案をいただければ幸いです。

0 投票する
0 に答える
1249 参照

c# - CreateProcessAsUser で作成された Process に stdin/stdout/stderr を完全にパイプします。

私がやろうとしているのは、現在ロックされているユーザーのWindows GUIでサービスからアプリケーションを起動できる小さなラッパーを書くことです。ラッパーは次のように呼び出されます: "wrapper.exe mspaint arg1 arg2 < some-piped-input"。パイプ以外はすべて正常に動作します。現時点では、3 つのパイプ (stdin、stdout、stderr 用) を作成しています。これにより、ラッパー (例では some-piped-input) にパイプされた入力が GUI アプリケーションのプロセスにリダイレクトされます。ラッパーの stdout/stderr への出力/エラー。

エラーは発生しません。機能しません。

次のコードでは、これらのパイプはどれも機能しません:

0 投票する
0 に答える
2393 参照

c++ - CreateProcessAsUser が失敗しました。GetLastError() を使用してエラー コード 1314 を取得します。

私はwin7 OSを使用しており、開発環境はvs2005です。

現在のアカウントの特権としてプロセスを作成したい状況です。

他の人の方法を参照します。1.プロセスexplorer.exeのトークンを取得します。2.権限を向上させます。3.CreateProcessAsUser を使用してプロセスを作成します。

しかし、CreateProcessAsUser は失敗し、GetLastError() を使用してエラー コード 1314 を取得します。

そのせいで、今の自分はおかしいと思っています。私のプログラムの何が問題なのか教えてください。ありがとうございました!!!

0 投票する
2 に答える
658 参照

c# - CreateProcessAsUser のプロセスが C# からいつ終了するかを知る方法はありますか?

現在、SYSTEM アカウントで実行されている Windows サービスから制限付きユーザーとしてプロセスを起動するために、C# から P/Invoke を使用して CreateProcessAsUser で遊んでいます。

私の目的は、オフィスのユーザーから情報を取得する必要があるアプリを起動するサービスを用意することです (フォアグラウンドで実行されているプロセス、アイドル状態の時間など)。問題は、このアプリがユーザーの特権で実行されている場合...まあ、彼はそれを閉じることができるということです. 別のアプリから通常のプロセスのように実行している場合、このリスポーンを次のように制御できます。

しかし、このように、私の問題は、no-respawn-closable-by-user-app を使用する代わりに、2 つの app-closable-by-user を使用することです (ただし、そのうちの 1 つがもう 1 つを再生成します:P)。

CreateProcessAsUserによって作成されたプロセスが強制終了または終了されたときに何らかのアクションを開始するために「監視」できるかどうかを知る方法があることをご存知ですか?

PD: もちろん、どんな種類の改善や別のアプローチも提案しないでください。