問題タブ [wtsapi32]
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.
winapi - 物理セッションの現在のユーザートークンを取得するにはどうすればよいですか?
現在のセッションユーザートークンを取得しようとしているコードがあります。
errの値は1314です。
アップデート1
これまでのところ運が悪いので、現在のプロセスSE_TCB_NAMEを許可しようとしましたが、それでもWTSQueryUserToken(1314)から同じエラーが発生します。
アップデート2:
さらにデバッグ情報を追加しましたが、prevState.PrivilegeCountは0です。
解決:
WTSQueryUserTokenは、LocalSystemとして実行している場合にのみ使用できるようです。つまり、サービスとして実行し、そこからデバッグする必要があります... Doh!
c++ - 空の文字列を返す WTSQuerySessionInformation
ターミナル サービス API にクエリを実行し、ターミナル サービス ボックスで実行中のセッションに関する状態情報を出力するプログラムを作成しました。これを行うために WTSQuerySessionInformation 関数を使用していますが、一部のデータが返されますが、ほとんどのデータが欠落しているようです...理由を知っている人はいますか?
これが私のプログラムです:
出力は次のとおりです。
ご覧のとおり、一部のデータは有効に見えますが、すべてではありません....
windows - ユーザーがセッションのロックを解除した直後にSwitchDesktopが機能しないのはなぜですか?
デスクトップを切り替えて新しいプロセスを開始するプログラムがあります。プロセスが終了すると、親プロセスは元のデスクトップを復元します。
テスト目的で、スイッチをトリガーするプレーンな win32 アプリにボタンを配置しました。動作し、起動したプロセス (メモ帳) を閉じると、元のデスクトップに戻ります。
同じプログラムで、WTSRegisterSessionNotification を呼び出して、セッションのロックが解除されたときに通知を受け取りました (WTS_SESSION_UNLOCK)。受け取ります。
しかし、WTS_SESSION_UNLOCK メッセージ ハンドラーでデスクトップを切り替えようとすると、SwitchDesktop は失敗し、GetLastError は 0 になります。ドキュメントによると、最後のエラーは通常、SwitchDesktop によって設定されません。
おもしろいことに、デスクトップを切り替える呼び出しを for ループに入れると、5 回目の反復で動作します。
要するに、これは機能しません:
しかし、この醜いハックは機能します:
(メッセージ ループを終了するための) タイマーを設定することもできますが、この問題に関しては、より複雑な形のループになります。SwitchDesktop は、WM_TIMER メッセージを数回送信した後に動作します。測定していませんが、一定時間のようです。
SwitchDesktop の MSDN ドキュメントには、私が使用するカスタム Userinit プロセスでは失敗することが記載されています。ただし、スイッチの直前に現在のデスクトップの名前を取得する:
いつも私default
にくれます。また、GetLastError
5 (アクセスが拒否された) ではなく 0 であるため、WTS_SESSION_UNLOCK 通知を受け取る前に、セキュリティで保護されたデスクトップがなくなっていることは確かです。
画面がロックされている間はデスクトップを切り替えることができないことはわかっていますが、デスクトップのロックが解除された後、 SwitchDesktop を呼び出すことができない「猶予期間」はありますか?
c++ - WTSConnectSession
この関数を使用して、特定のユーザー セッションに接続しようとしています。私はすべてを試しましたが、関数は常にERROR_ACCESS_DENIED
5 (0x5) Access is denied またはERROR_CTX_WINSTATION_ACCESS_DENIED
7045 (0x1B85) The requested session access is denied で失敗します。このようにセッションIDとパスワードをハードコーディングしても
この関数を使用するよりも、ユーザー セッションを開始するためのより良い方法はありますか。ユーザーの簡易切り替えを実装しようとしていますが、これがパズルの最後のピースであり、ユーザー セッションにログオンすることです。ありがとうございました。
c++ - 現在のセッションにログオンしているユーザーのドメイン\ユーザーを取得するにはどうすればよいですか
プロセスが実行されているセッションにログオンしているユーザーのユーザー名とドメインを取得する方法を探しています。プロセストークン情報は別のユーザーのトークンから作成されているため、信頼できません。間違った情報が含まれています。
私は WTS サービスに依存しない方法を好みます。
GetUserObjectInformationを使用してからLookupAccountSidを使用してみましたが、「ログオン セッションを識別するログオン SID など、対応するアカウント名を持たない SID で発生する」ため、LookupAccountSid は ERROR_NONE_MAPPED を返します。
ありがとう
windows - 自分のマシンがリモート アクセスされたかどうかをプログラムで検出する
1 台の PC で実行されている winservice があり、サーバーに接続されているため、この winservice にコマンドをプッシュできます。
コマンドの 1 つは次のようにする必要があります: isConnectedRemotly : 誰かが他のマシンからこのマシンに (リモートで) 接続した場合に true を返し、どのユーザー名 (接続先のセッション ユーザー名) に対して
どうすればそれができますか?
powershell - powershell を使用してステーションがロックされているかどうかを確認する方法
c#でwtsapi32.dllを使ってパソコンの状態を確認できることがわかりました。しかし、powershellを使用してそれを行うことは可能ですか?
c# - RDP セッション内で (リモート ユーザーではなく) ローカル ユーザーをキャプチャすることは可能ですか?
RDP セッションからローカル ユーザー名を取得しようとしています。明確にするために、以下の例を参照してください。
私のローカル ワークステーションはWORKSTATION1と呼ばれ、このローカル ワークステーションにJOHN.DOEとしてログインしています。
JANE.DOEを使用して RDP 接続を行います。RDP セッション内からJOHN.DOEをキャプチャすることは可能ですか? WTSQuerySessionInformation API を使用してキャプチャできるとは思いません。
どんな提案でも大歓迎です。