CitrixとDelphi 2007アプリケーション間の問題について知っている人はいますか? (そしておそらく他の開発言語?)

StackOverflow https://stackoverflow.com/questions/1444830

  •  22-07-2019
  •  | 
  •  

質問

状況は簡単です。いくつかの異なる手法を使用する複雑なDelphiアプリケーションを作成しました。メインアプリケーションはWIN32モジュールですが、いくつかのパーツは.NETアセンブリとして開発されています。また、Webサービスと通信したり、特定のWebサイトからデータを取得したりします。レジストリ内のいくつかの追加設定を使用して、ユーザーデータのほとんどをMS Accessデータベース内に保持します。メモリ内では、すべてのデータがXMLドキュメント内で変換され、システムがクラッシュした場合に備えてバックアップとしてディスクに保存されることがあります。 (したがって、ユーザーは自分のデータを回復できます。)また、読み取り専用の目的でXMLファイルにデータがいくつかあります。アプリケーションは他のアプリケーションも実行し、それらが終了することを望んでいます。全体として、それは非常に複雑なアプリケーションです。

このアプリケーションではCitrixをサポートしていませんが、一部のユーザーはCitrixサーバーでこのアプリケーションを使用しています。 (基本的に、これらのユーザーはよりモバイルになります。)しかし、Citrixをサポートしていないことを伝え続けていますが、これらの顧客は、発生する可能性のあるいくつかの問題をサポートするために私たちをプッシュしようとしています。

主な問題は、Citrixシステムでポップアップするように思われる偶発的なランダムな例外のようです。同じ場所にいることはなく、多くの場合、メモリの問題に関連しているように見えます。既に多くのエラーレポートがあり、さまざまなエラーが多すぎます。ですから、それらをすべて解決するのは複雑だと思います。

したがって、もう少し一般的なものにしたいと思います。Delphi(2007)がCitrixシステムで実行されている場合に発生する可能性のある問題について知りたいだけです。特に、このアプリケーションが何らかの方法でCitrix対応に設計されていない場合。 Citrixを公式にサポートしたくはありませんが、それらの顧客を支援できれば幸いです。彼らが私たちにもっとお金を払うというわけではありませんが、それでも...

では、DelphiアプリケーションがCitrixシステムで発生する可能性のある一般的な問題を誰もが知っていますか? 一般的なCitrixの一般的な問題について誰か知っていますか? Citrixの問題に対するSilver BulletまたはGolden Hammerソリューションはどこかにありますか?

ところで。 Citrixに関する私の知識は、このWikipedia エントリとこのWebサイト ...そして Googled ...

役に立ちましたか?

解決

過去に、Citrixで公開されたDelphiアプリケーションにタスクバーにアイコンがないという問題がいくつかありました。これはMainFormOnTaskbar(D2007以降で利用可能)によって解決されたと思います。それとは別に、Terminal ServerとCitrixの間に大きな違いはありません(アプリケーションの観点から)、考慮する必要がある最も重要なことは次のとおりです。

  • ユーザーは、ターミナルまたはCitrixサーバーの管理者ではないため、レジストリのローカルマシン部分、Cドライブ、プログラムフォルダーなどに対する権限はありません。
  • 同じシステム上の複数のユーザーがアプリケーションを同時に起動できる必要があります。
  • Windowsフォルダーなどの特定のフォルダーは、アプリケーションの問題を防ぐためにリダイレクトされます。これは、GetWindowsFolderなどのAPIが実際のWindowsフォルダーではなく、リダイレクトされたフォルダーを返すことも意味します。 PEヘッダーに特定のフラグを設定することにより、この動作を無効にできることに注意してください( delphi-and-terminal-server-aware )。
  • ファームで複数のサーバーが使用される場合があります。これは、アプリケーションがこれらのサーバーのいずれかで実行できることを意味し、ユーザーはログイン時に最も負荷の少ないサーバーにリダイレクトされます(負荷分散)。したがって、物事を保存するためにローカルデータベースを使用しないでください。
  • 外部データベース、ミドルウェア、またはアプリケーションサーバーを使用する場合、複数のユーザーが同じコンピューター名とIPアドレスで接続することに注意してください(特定のCitrixバージョンでは、これに対処するために仮想IPアドレスを使用できます)。

他のヒント

多くのお客様は、CitrixでDelphiアプリケーションを使用しています。一般的に、それはうまく機能します。 Delphiの古いバージョンでは印刷の問題がありましたが、これはDelphiのより新しいバージョン(Delphi 2007よりも確かに新しいバージョン)で修正されました。ただし、現在はターミナルサービスで実行しているため、Citrixの有無に関係なく機能しないものがあります。たとえば、GLOBAL修飾子なしで名前付きパイプを使用するInterBaseの古いバージョンへのローカル接続はできません。 DoubleBufferedを使用することも非常に悪い考えです。等々。私の提案は、特にDelphiとCitrixに関するアドバイスを探すのではなく、Win32アプリとターミナルサービスに関するアドバイスを探すことです。私が知っているCitrix特有の問題の1つは、Cドライブを利用できると期待できないことです。コードにドライブ文字をハードコーディングしていないことを願っていますが、持っていると問題が発生する可能性があります。

一般的に、XenAppを使用するには、アプリケーションがMSターミナルサービスと互換性がある必要があります。私の理解では、.NETアプリケーションはターミナルサービスと互換性があるため、拡張機能によりCitrix環境でも機能するはずです。明らかに、あなたはいくつかの問題に苦しんでいるので、それはそれほど単純ではありません。

http://community.citrix.com/citrixready からテストおよび検証キットを入手できます。役立つと思うかもしれません。テストキットとバーチャルラボツールが最も役立つと思います。キットは無料で使用できますが、サインアップが必要です。

セキュリティが問題になる場合があります。機密フォルダーが「サンドボックス化」されていない場合(リダイレクトに関するRemkoの議論を参照)、ユーザーはアプリから抜け出して、すべきでないことを実行できます。アプリをプローブして、「シェルアウト」したときに何が起こるかを確認する必要があります。アプリの。一般的な攻撃ポイントは、CHMヘルプ、IEを使用してHTMLを表示するコンテンツ、およびファイルを開く/保存するダイアログです。
例:.chmヘルプを表示する場合、ユーザーはヘルプトピック「ソースの表示」内で右クリックできます。通常、メモ帳が開きます。そこから、ディレクトリ構造をナビゲートできます。それらが適切に含まれていない場合、彼らはいくつかのいたずらをすることができるかもしれません。 例:通常、Internet Explorerを実行する方法がなく、アプリの[About]ボックスまたは「Webサイトにアクセス」にクリック可能なURLがある場合ヘルプメニューで出来上がり! Webブラウザーにアクセスできます。制限されていない場合、windowsディレクトリに移動してコマンドシェルを開くことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top