「Sim-Sim、open up!」、またはRemoteApp経由でリンクを開く方法

より多くの場合、プログラムをクラウドに持ち込み始めました。 良いか悪いかにかかわらず、それについては説明しませんが、今日は、ローカルプログラムをクラウドにドッキングする必要がある状況について少し説明します。DocsvisionEDSおよびユーザーPCにローカルにインストールされたメールクライアントのコンテキストで。 タスクを想像してください:Docsvisionの「カード」へのリンクを開きます。このカードは、コンピューターにローカルにインストールされた電子メールクライアントのユーザーにメールで送信されました。 問題を調査し、パートナーの経験を分析して、私たちはあなたと共有したい解決策を見つけました。

Docsvisionの主要なクライアントソフトウェアはNavigatorであり、Remote Appとして公開できます。 これにはさまざまな理由が考えられます。たとえば、リモートユニットからDocsvisionサーバーへの弱いチャネルなどです。 曇り、ユーザーにとって高速、管理者にとって便利。 しかし、上記のタスクの場合、ユーザーがコンピューターにローカルにインストールしたメールクライアントから「カード」へのリンクを開く必要がある場合はどうなりますか。

そのようなデフォルト設定で何が起こるかを少し説明しましょう。 ユーザーはDocsvisionオブジェクトへのリンクが記載された電子メールを受信し、それを追跡しようとします。ローカルにインストールされたブラウザーを開いており、...ここで問題が始まります。 Docsvisionサーバーが利用できないため、リンクは開きません。 ユーザーはinし、アプリケーションをITサービスに落書きします。 最近、「この問題を解決する方法」という質問がシステム管理者から頻繁に聞かれています。

私たちの決定の本質は次のとおりです

Docsvisionのオブジェクトへのリンクは、特定の形式で形成されます。 このリンクがクライアントコンピューターで呼び出されると、RemoteAppを開くスクリプトが起動され、RemoteAppの既定のブラウザーで開かれるDocsvisionオブジェクトへの標準リンクに変換されます。 したがって、リモートデスクトップでDocsvision Navigatorを実行します。
もちろん、このソリューションが唯一の正しいソリューションであると主張しているわけではありませんが、4,000を超えるアクティブユーザーがいるソリューションで使用されていることは確かです。
段階的な指示の形で共有します。

段階的なセットアップ
1.コンテンツを含むVBSスクリプトを作成します。

On Error Resume Next Dim WshShell Set WshShell = CreateObject("WScript.Shell") Dim regEx if WScript.Arguments.count >0 then Arg = WScript.Arguments.Item(0) Set regEx = New RegExp regEx.Pattern = "^dv5term://(.*)" regEx.IgnoreCase = True arg = regEx.Replace(arg, "$1") WshShell.Run "http://" & arg end if 

2.作成したVBSスクリプトを、たとえば「docsvision5-link」という名前で、サーバー上のRemoteAppとして公開します。

RemoteAppマネージャーに移動し、「リモートプログラムの追加」を選択します。



開いた「RemoteAppウィザード」で、指示に従って、VBSスクリプトを公開します











3.公開されたアプリケーションに、すべてのコマンドラインコマンドを実行するための「docsvision5-link」権限を付与します。





4. Remote App Wizardでdocsvision5-linkアプリケーションのRDPファイルを作成します(RDPファイルの例はdv5link.rdpです)。









5.意識的なRdpファイルをクライアントワークステーションに配布します。

6.クライアントコンピューターで、次のエントリを含む.reg拡張子のファイルを使用して、dv5termレジストリブランチを作成します。

 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\dv5term] @="URL:dv5term Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\dv5term\shell] @="" [HKEY_CLASSES_ROOT\dv5term\shell\open] @="" [HKEY_CLASSES_ROOT\dv5term\shell\open\command] @="\"mstsc\" /remotecmdline:\"%1\" \"\\\\serverRDP\\DocsVision\\dv5link.rdp\"" 

7.サーバーによって形成されるリンクの形成を、dv5termの形式のカードに変更します://server.docsvision.com/DocsVision/?CardID = {1007DDE2-76E0-E511-80CA-A0D3C1063571}

これらの設定で何が起こるか:

ユーザーがリンクをクリックします。

dv5term://serverRDP.docsvision.com/DocsVision/?CardID = {1007DDE2-76E0-E511-80CA-A0D3C1063571}


レジストリに関連付けられているコマンドが実行されます。

 "mstsc" /remotecmdline:"%1" "\\serverRDP.docsvision.com\DocsVision\dv5link.rdp" 

つまり \\ serverRDP.docsvision.com \ DocsVision \ dv5link.rdpとパラメーターが完全なURLとして渡される


同じパラメーターを持つスクリプトが呼び出されます:

\\ serverRDP.docsvision.com \ C $ \ script \ ie5.vbs%1



このスクリプト:

 On Error Resume Next Dim WshShell Set WshShell = CreateObject("WScript.Shell") Dim regEx if WScript.Arguments.count >0 then Arg = WScript.Arguments.Item(0) Set regEx = New RegExp regEx.Pattern = "^dv5term://(.*)" regEx.IgnoreCase = True arg = regEx.Replace(arg, "$1") WshShell.Run "http://" & arg end if 



パラメータを変換します:

dv5term://serverRDP.docsvision.com/DocsVision/?CardID = {1007DDE2-76E0-E511-80CA-A0D3C1063571}



serverRDP.docsvision.com/DocsVision/?CardID= {1007DDE2-76E0-E511-80CA-A0D3C1063571}

通常の交換と呼び出し

 Set WshShell = CreateObject("WScript.Shell") WshShell.Run http://serverRDP.docsvision.com/DocsVision/?CardID={1007DDE2-76E0-E511-80CA-A0D3C1063571} 

つまり システムの標準的な方法でコマンドを実行しようとします。または、デフォルトでブラウザを使用して、ターミナルサーバーでserverRDP.docsvision.com/DocsVision/?CardID= {1007DDE2-76E0-E511-80CA-A0D3C1063571}リンクを開こうとします。

繰り返しますが、この決定が唯一の正しい決定であるとは主張していません。 おそらく、この問題に対する他の解決策がいくつかありますか?

喜んで共有します!

Kirks Khokhlov、DoksVisionシニアコンサルタント。

Source: https://habr.com/ru/post/J325018/


All Articles