問題タブ [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.
c++ - SSPI から委任された資格情報を使用して Windows で CreateProcessAsUser を行う方法は?
私は Kerberos ログオン インフラストラクチャ (シングル サインオン) で作業しています。
- Kerberos Key Distribution Center に対して認証されるクライアント。
- Kerberos を認証として使用するプリンシパル サービス サーバー。
サーバー プログラムは C++ でコーディングされています。
プリンシパル (クライアント) とサービス プリンシパル (サーバー) の間のコンテキストを問題なく作成できます。また、クライアント ユーザー資格情報を使用してサーバー上にプロセスを作成する必要があるため、クライアント資格情報もサーバーに委任しました。
これは私の問題です。サーバー側では、SSPI コンテキストがあり、Windows の type を使用して CreateProcessAsUser が必要ですpHandle
。
SSPI 資格情報を使用して、クライアント ユーザーとしてサーバー上にプロセスを作成する方法がわかりません。
LsaLogonUser を調べてみましたが、これは私が望んでいること (kerberos ユーザー資格情報からハンドルを作成する) のようですが、問題は同じです。この LsaLogonUser で SSPI トークンを使用する方法がわかりません。
よろしくお願いします。
c++ - CreateProcessAsUser - エラー 1305
サービスがあり、このサービスからの現在のユーザー特権で gui アプリケーションを実行する必要があります。これは私のコードで、常に 1305 CreateProcessAsUser 関数で GetLastError を返します。どうすれば修正できるか、または私のコードが正しくない可能性があります。役立つアドバイスをいただけますか。どうも。
windows - 標準ユーザーがログオンしているときに管理対話プロセスを起動する
サービスから実行できない BlockInput() 関数や NVIDIA の NVAPI 関数など、デスクトップ関連のリソースにアクセスできるように、ヘルパー インタラクティブ プロセスを管理者として作成するシステム サービスがあります。ログオンしたユーザーが管理者のメンバーである場合、次のことが機能しました。
- SE_TCB_NAME を含む特権レベルの設定
- WTSGetActiveConsoleSessionId() でアクティブなセッション ID を取得する
- WTSQueryUserToken() を使用して、セッション ID からログオン ユーザーを取得します。
- TokenLinkedToken を使用した GetTokenInformation()
- SecurityImpersonation を使用した DuplicateTokenEx()
- CreateProcessAsUser() でプロセスを起動
ただし、現在ログオンしているセッションを管理者ではなく標準ユーザーにすると、おそらく標準ユーザーに管理者レベルのトークンがリンクされていないため、ステップ 4. が失敗します。ここでの解決策は何ですか?管理者ユーザーの 1 人のトークンを取得する必要があると思いますが、どうすればよいですか? また、そのユーザーがログオンしていない場合でも、現在のデスクトップと対話する機能にアクセスできますか?
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。
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 のコンテキストではなく、ユーザーのコンテキストでプロセスを開始する方法はありますか?
どうもありがとう!
python - Python: Windows で createprocessasuser API を使用する場合の stderr ストリームの処理
この問題のデバッグに助けが必要です。オンラインとstackoverflowを検索してみましたが、これに対する解決策が見つかりませんでした。私はWindows APIにかなり慣れていないので、私の無知を許してください。
基本的に、特定のユーザーを使用して Python から stdout および stderr に出力する C++ アプリケーションを実行しようとしています。この目的のために、LogonUser API と CreateProcessAsUser API を使用してバイナリを呼び出し、パイプを使用して出力とエラー ストリームをキャプチャします。ほとんどのコードは、python win32 モジュールのデモ コードからピックアップしました。ただし、何らかの理由でプロセスがエラー ストリームにダンプされると、WriteFile でハングします。クラッシュ ダンプを調べると、ファイル ハンドルが 2 (stderr) であることがわかります。誰かが私の問題を手伝ってくれますか?
前もって感謝します
これがコードスニペットです -