問題タブ [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 投票する
3 に答える
546 参照

c++ - SSPI から委任された資格情報を使用して Windows で CreateProcessAsUser を行う方法は?

私は Kerberos ログオン インフラストラクチャ (シングル サインオン) で作業しています。

  1. Kerberos Key Distribution Center に対して認証されるクライアント。
  2. Kerberos を認証として使用するプリンシパル サービス サーバー。

サーバー プログラムは C++ でコーディングされています。

プリンシパル (クライアント) とサービス プリンシパル (サーバー) の間のコンテキストを問題なく作成できます。また、クライアント ユーザー資格情報を使用してサーバー上にプロセスを作成する必要があるため、クライアント資格情報もサーバーに委任しました。

これは私の問題です。サーバー側では、SSPI コンテキストがあり、Windows の type を使用して CreateProcessAsUser が必要ですpHandle

SSPI 資格情報を使用して、クライアント ユーザーとしてサーバー上にプロセスを作成する方法がわかりません。

LsaLogonUser を調べてみましたが、これは私が望んでいること (kerberos ユーザー資格情報からハンドルを作成する) のようですが、問題は同じです。この LsaLogonUser で SSPI トークンを使用する方法がわかりません。

よろしくお願いします。

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

c++ - CreateProcessAsUser - エラー 1305

サービスがあり、このサービスからの現在のユーザー特権で gui アプリケーションを実行する必要があります。これは私のコードで、常に 1305 CreateProcessAsUser 関数で GetLastError を返します。どうすれば修正できるか、または私のコードが正しくない可能性があります。役立つアドバイスをいただけますか。どうも。

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

windows - 標準ユーザーがログオンしているときに管理対話プロセスを起動する

サービスから実行できない BlockInput() 関数や NVIDIA の NVAPI 関数など、デスクトップ関連のリソースにアクセスできるように、ヘルパー インタラクティブ プロセスを管理者として作成するシステム サービスがあります。ログオンしたユーザーが管理者のメンバーである場合、次のことが機能しました。

  1. SE_TCB_NAME を含む特権レベルの設定
  2. WTSGetActiveConsoleSessionId() でアクティブなセッション ID を取得する
  3. WTSQueryUserToken() を使用して、セッション ID からログオン ユーザーを取得します。
  4. TokenLinkedToken を使用した GetTokenInformation()
  5. SecurityImpersonation を使用した DuplicateTokenEx()
  6. CreateProcessAsUser() でプロセスを起動

ただし、現在ログオンしているセッションを管理者ではなく標準ユーザーにすると、おそらく標準ユーザーに管理者レベルのトークンがリンクされていないため、ステップ 4. が失敗します。ここでの解決策は何ですか?管理者ユーザーの 1 人のトークンを取得する必要があると思いますが、どうすればよいですか? また、そのユーザーがログオンしていない場合でも、現在のデスクトップと対話する機能にアクセスできますか?

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

c# - CreateProcessAsUser 複数のアプリケーション インスタンス?

CreateProcessAsUser を使用してサービスを起動しようとしていますが、何らかの理由で、デバッグ時に EXE の複数 (30 以上) のインスタンスが作成されています。プロセスは、次のコード行で生成され始めます。

ret = CreateProcessAsUser(DupedToken, Path, null, ref sa, ref sa, false, 0, (IntPtr)0, "c:\\", ref si, out pi);

この例のコードを使用しました - http://support.microsoft.com/default.aspx?scid=kb;EN-US;889251

ここに画像の説明を入力

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

c# - CreateProcessAsUser ユーザー コンテキスト

私はすでに長い間検索してきましたが、まだ有効な解決策を見つけることができませんでした:-(

CreateProcessAsUser ( http://www.pinvoke.net/default.aspx/advapi32/createprocessasuser.html )、WTSEnumerateSessions などを使用して、マシンにログオンしているすべてのユーザーでクライアントを起動するウィンドウ サービスを作成しました...

これはすでに正常に動作します。クライアントはユーザーのセッションで起動し、タスクバー アイコンを表示し、サービスとの通信は正常に機能しています。

私が抱えている問題は、そのクライアントがユーザーのプロファイルに一時ファイルを保存する必要があることです。ユーザーが最終的に経験する可能性のあるエラーを追跡できるように、小さなログ ファイルから始めてみました。残念ながら、WindowsIdentity は正しいユーザーを示していますが、クライアントが LocalSystem のコンテキストで実行されているように見えるため、ユーザーの一時フォルダーに保存できません。 System.IO.Path.GetTempPath() は常に 'C:\Windows\Temp' を返しますが、私のユーザーの管理者権限がないため、そこに書き込むことができません...さらに、現在のユーザーのレジストリに設定を保存する予定でしたが、これも機能していません。これは、何らかの方法で間違った一時パスに関連していると思います。

CreateEnvironmentBlock ( http://www.pinvoke.net/default.aspx/userenv/CreateEnvironmentBlock.html ) も試しましたが、動作させることができず、Vista またはより高いので、私はそれについての研究をやめました。

テストのために、これを行うだけの小さなテストフォームを作成しました:

これは、偽装の前後で常に同じ結果を示します: "Temp: C:\Windows\Temp User:testdomain\testuser" :-(

これがプロセスを開始するための私の関数です(ユーザートークンはWTSEnumerateSessionsによって配信されます)-もちろん、これはLocalSystemのコンテキストでのみ機能します:

LocalSystem のコンテキストではなく、ユーザーのコンテキストでプロセスを開始する方法はありますか?

どうもありがとう!

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

python - Python: Windows で createprocessasuser API を使用する場合の stderr ストリームの処理

この問題のデバッグに助けが必要です。オンラインとstackoverflowを検索してみましたが、これに対する解決策が見つかりませんでした。私はWindows APIにかなり慣れていないので、私の無知を許してください。

基本的に、特定のユーザーを使用して Python から stdout および stderr に出力する C++ アプリケーションを実行しようとしています。この目的のために、LogonUser API と CreateProcessAsUser API を使用してバイナリを呼び出し、パイプを使用して出力とエラー ストリームをキャプチャします。ほとんどのコードは、python win32 モジュールのデモ コードからピックアップしました。ただし、何らかの理由でプロセスがエラー ストリームにダンプされると、WriteFile でハングします。クラッシュ ダンプを調べると、ファイル ハンドルが 2 (stderr) であることがわかります。誰かが私の問題を手伝ってくれますか?

前もって感謝します

これがコードスニペットです -