問題タブ [terminal-services]
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.
windows - ログオンID(LUID)からUserTokenを取得する(C ++)
私はWindowsセッションがどのように機能するかをよりよく理解しようとしているので、質問に奇妙な間違いがある場合は、私に知らせてください。
私LsaEnumerateLogonSessions()
は、システム内のすべてのログオンセッションを取得するために使用します。これで、ログオンを表すLUIDができました。正しく理解していれば、ログオンしたユーザー、またはSYSTEMのようなビルドユーザーを表します。
これで、ユーザーXがプロセスを開始すると、WindowsはそのプロセスにXを表すトークンを与えます。
(Windowsサービスで)LUIDからユーザーのトークンを取得する方法はありますか?プロセスHANDLEから取得できることはわかっていますが、それは私が望んでいることではありません。
winapi - ユーザーが使用しているTSセッションIDをLUIDから取得する
リモートデスクトップを使用してドメイン上のXPコンピューターに接続しています(前回の再起動以降、ユーザーが接続されていないか、接続されていません)。使用しているアプリケーション(explorer.exeなど)がTSセッションID0に属していることがわかります。
同時に、実行LsaGetLogonSessionData()
しているWindowsサービスの関数を使用して情報を取得しています。その関数から取得した情報によると、TSセッションIDは(たとえば)2であり、0ではありません。
関数がTSセッション2にあることを通知した場合、WindowsサービスでログインがTSセッション0でexplorer.exeを使用していることをどのように確認できますか?!
これらのWindowsセッションが私を本当に混乱させたことを認めなければなりません!
質問を言い換えてみます。LUIDが使用しているTSセッションIDをどのように知ることができますか?
networking - 複数の同時ユーザーが互いに干渉することなくサーバーにログインできるようにする最適なアプリケーションは何ですか?
私たちのオフィスにはサーバーがあり、6 人の従業員が 6 つの異なる都市に分散しています。これらの 6 人の従業員がインターネット経由で同時にサーバーにログインし、互いに邪魔することなく (ERP システムを開く、メールをチェックする、ファイルを削除する) さまざまなタスクを実行しようとするケースに直面しています。つまり、各従業員はそれぞれから独立して作業します。他の。
もちろん、すべてのファイアウォールや障害物を通過するために、インターネット経由でこれらの機能を提供するソフトウェアを好む.
TeamViewer のようないくつかのアプリケーションを見つけましたが、1 人のユーザーのみが完全に制御できます
delphi - リモート デスクトップ サービスを「サポート」するために、アプリケーションは何をする必要がありますか?
リモート デスクトップ サービス経由で実行する必要がある Delphi プログラムがあります。正常に動作しなくなるのに注意すべきことは何ですか?
c# - Windows Server 2008でコンソール(管理)セッションをプログラムで検出しますか?
私のアプリケーションはWindowsServer2008でサービスとして実行されています。アクティブなコンソールセッションを検出する方法を探しています。これは、コンソールまたは管理セッションとして開始されたRDPセッション( "mstsc / admin")のいずれかです。
コンソールセッションは「コンソール」と呼ばれますが、RDPセッションで迷子になります。Windows 2003では、コンソールセッションが常にID 0で実行されていたため、簡単でした。これはVistaから変更されたため、別の方法を探しています。
すでにWTSxxxWin32APIを確認しましたが、探しているものが見つかりません。
誰か助けてもらえますか?
clickonce - ターミナル サービス WebApp の自動更新としての ClickOnce アプリ?
開始時に自動更新をチェックする clickonce アプリは、端末サービス Web アプリとしてそれ自体を自動更新しますか? 通常のデスクトップ アプリと同じように、自分自身をチェックして更新しますか?
c# - ターミナルサービス対応のアプリケーションは、どのようにしてユーザーのプライベートWindowsディレクトリを取得できますか?
GetWindowsDirectoryのドキュメントには次のように書かれています。
- TS対応アプリケーションは、実際のWindowsディレクトリを取得します。
- TSに対応していないアプリケーションは、現在のユーザーの「プライベート」Windowsディレクトリを取得します。
したがって、TS対応である必要があるC#クラスライブラリに取り組んでいます。このライブラリを使用するすべてのアプリがTS対応である必要はないためです。C#のデフォルトはTS対応です。
TS対応ではないレガシーアプリと通信するには、INIファイルをWindowsディレクトリにドロップする必要があります。これは通常のユーザーでは問題なく機能しますが、ターミナルサービスセッションでは機能しません。
ターミナルサービスの下:
- レガシーアプリは、ユーザーの「プライベート」WindowsディレクトリにあるINIファイルを使用します。
- C#ライブラリは、システムのWindowsディレクトリにあるINIファイルを使用します。
する必要がある:
- ターミナルサービスで実行しているときに検出します。
SystemInformation.TerminalServerSession
フラグをチェックすることでこれを行うことができます。 - TS対応プロセスから、ユーザーの「プライベート」Windowsディレクトリを見つけます。これを行う方法を説明しているドキュメントが見つかりません。
remote-desktop - RDPを介して.NETアプリケーションを共有/コラボレーションしますか?
誰かが、RDP /デスクトップ共有を介して単一のC#.net 3.5ベースのアプリケーションを共有する方法を示す例/ドキュメントを教えてもらえますか?
このブログ投稿を見つけましたが、ここからどこに行くべきかわかりません:
http://blogs.msdn.com/b/rds/archive/2007/03/08/windows-desktop-sharing-api.aspx
Windows 7で実行していますが、デスクトップ全体を共有したくありません。私が書いている特定のアプリケーションだけです。
winapi - WTSQuerySessionInformation が「アクセスが拒否されました」で失敗することがある
次の API 呼び出しを使用して、ターミナル サーバー セッションでリモート クライアントの名前を特定しています。
通常、アプリケーションがターミナル サーバー セッションで実行されていないbuffer
場合、呼び出しは成功し (ret != 0)、単に null ポインターを返します。したがって、これは予想される動作であると考えました。
しかし、ある顧客のマシンでは、関数が失敗し始め (ret == 0)、GetLastError
5: アクセスが拒否されました。(いつものように、顧客は自分のシステム構成はまったく変更されていないと主張しています。)
だから、私の質問は次のとおりです。
- 非ターミナル サービス マシン (たとえば、「通常の」Windows 7 PC など) で WTSClientName をクエリすると、どのような動作が予想されますか?
- このエラー コードが返される理由は何ですか? テスト マシンでは、ユーザーが管理者権限を持っていなくても、関数呼び出しは常に期待どおりに動作することに注意してください (成功し、バッファーが空になります)。
これが関連しているかどうかはわかりませんが、Web アプリケーション内から関数を呼び出すことで、この問題 (エラー 5) を再現できます。ただし、この場合はそうではありません (通常の Windows アプリケーションです)。
.net - ターミナルサーバーセッションからクライアント名を取得するための推奨される方法
ユーザーのターミナルサーバーセッションから基になるクライアントPC名を取得する必要があります。
私はそれが住んでいることを知っていますが、HKEY_CURRENT_USER\Volatile Environment\CLIENTNAME
それを取得する別の(できればネイティブの.net)方法はありますか?