問題タブ [mixed]
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.
exception - 混合ネイティブ/マネージド実行可能ファイルの最終マネージド例外ハンドラー?
/clr でコンパイルされた MFC アプリケーションがあり、キャッチされないマネージ例外の最終ハンドラーを実装しようとしています。ネイティブ例外の場合、オーバーライドCWinApp::ProcessWndProcException
が機能します。
Jeff のCodeProject 記事で提案されている 2 つのイベントApplication.ThreadException
とAppDomain.CurrentDomain.UnhandledException
は発生しません。
混合実行可能ファイルに最終的なマネージド例外ハンドラーを提供する方法を提案できる人はいますか?
アップデート:
これらの例外ハンドラーは、ダウンストリームApplication.Run
または同様のものでのみトリガーされるようです (ワーカー スレッド フレーバーがあり、名前を思い出せません)。マネージ例外を完全にグローバルにキャッチしたい場合は、SEH フィルターをインストールする必要があります。System.Exception
コールスタックが必要な場合は、独自のウォーカーをロールバックする必要があります。
このトピックに関する MSDN フォーラムの質問では、try ... catch (Exception^)
. たとえば、CWinApp::Run
. これは良い解決策かもしれませんが、パフォーマンスや安定性への影響については調べていません。保釈する前にコール スタックをログに記録する機会が得られ、デフォルトの Windows 未処理の例外動作を回避できます。
.net - 混合 .NET DLL を難読化するための最適な製品
.NET DLL とアプリケーションがあります。DLL は C++/CLI で記述されており、「混在」しています。つまり、部分的に管理されたコードと部分的にネイティブなコードです。
1. すべてのマネージ
コードを難読化して、逆アセンブルできないようにする
2. 混合 DLL のパブリック メソッド/クラスを難読化して、誰も自分のアプリケーションで DLL を使用できないようにする (つまり、パブリック名をごちゃまぜにする)。
はい、難読化が完璧ではないことは理解しています。この 2 つの目標は、管理要件です。これを処理できる唯一のアプリは、Dotfuscator Professional Edition のようです。残念ながら、それは、セールスマンに価格を教えてもらうよう頼まなければならない、信じられないほど迷惑なアプリの 1 つです。別の解決策を知っている人、または安価で合法的なコピーを購入するのに適した場所を知っている人はいますか?
マネージ コードで DLL を書き直すように言わないでください。それには 1 か月の作業が必要であり、承認を得ることができません。:-)
難読化がどれほど優れているかについて、私は特に偏執的ではないことに注意してください。アプリ内のすべてのメソッドとクラスの名前をごちゃまぜにするものであれば、おそらく十分です。
私が試した他の難読化ツールは次のとおりです。
Dotfuscator Community Edition には Visual Studio 2008 が付属していますが、混合アセンブリはサポートされていません。
Eazfuscator .NET はシンプルで無料ですが、混合アセンブリをサポートしていません。
{smartassembly} は、1 つのライセンスで 500 ドルです。興味深い機能がいくつかありますが、混合アセンブリはサポートされていません。
サラマンダーは800ドル。混合アセンブリを完全にサポートすると主張しているが、難読化された dll を使用しようとすると、アプリケーションがクラッシュする
.NET Reactor は、1 つの開発者ライセンスで 180 ドルです。混合 DLL の「部分的な」難読化をサポートします。残念ながら、DLL のパブリックタイプを難読化しても機能しません。.exe はクラスを見つけることができません。DLL を .exe にマージ/パックする機能がありますが、混合 DLL を使用すると機能しません (.exe の一部であっても、exe は DLL のアセンブリを見つけることができません)。
スケーターは、単一のライセンスで 300 ドルです。彼らのウェブサイトには、混合アセンブリをサポートしていると主張するものは何もありません。アプリを試してがっかりするのにうんざりしているので、そうではないと思います。
また、Microsoft の ILMerge を試して、DLL を .exe とマージしてから難読化できるかどうかを確認しましたが、混合 DLL でチョークするようです。
Dotfuscator に代わるものや、正規のコピーを購入するのに適した場所について何か提案はありますか? 安価に販売していると主張する名前のないサイトをいくつか見つけましたが、それらはロシアの海賊版だと思います.
c++ - 混合言語プログラミング、VB および C++、API およびポインターの理解
私の問題は、混合言語プログラミングの細かい点を理解し、外部ライブラリの API にアクセスすることです。C++ での私のスキルは存在せず、VB では平凡です。
C++ dll をコンパイルして (portaudio ライブラリ)、VB (Visual Studio 2005) からアクセスしようとしています。関数を呼び出すときに MarshallDirectiveException エラーが発生します。dll とのやり取りが間違っているためだと思います。
C++ 関数と構造体は次のように定義されます。
ヘッダー情報:
ドキュメントからのプログラムの使用法:
指定されたデバイスに関する情報を含む PaDeviceInfo 構造体へのポインターを取得します。
戻り値: 不変の PaDeviceInfo 構造体へのポインター。デバイス パラメータが範囲外の場合、関数は NULL を返します。
パラメーター: device 0 から (Pa_GetDeviceCount()-1) の範囲の有効なデバイス インデックス
私が持っているVBプログラムでは:
ドキュメント状態 Pa_GetDeviceInfo は構造に関する情報を含む構造への POINTER を返し、関数が最初に構造を作成することを暗示しているため、これは間違っていると感じます。
私は混合言語プログラミング、C++ の完全な初心者、および貧弱な VB プログラマーにまったく慣れていません。この問題を解決するための正しい方法を教えてくれる人はいますか? 私の感じでは、DLL で作成されたメモリ内の構造体を参照するように VB を取得する方法を理解する必要があるため、関数の戻り値として「物へのポインター」を理解するように vb を取得する必要があります。
提供された支援に感謝します。ただ rtfm とは言わないでください。私は今、FM で目を覚ましています。どこを見ればいいのかわかりません。
どうもありがとう、デビッド
c++ - c++ dll を使用した Visual Studio 2005 VB のデバッグ - 混合言語のデバッグ
dll で関数を呼び出す vb プロジェクトがあります。dll は、c で記述された別の vs プロジェクト (portaudio) で作成されます。
dll c プロジェクトはクリーンにコンパイルされ、必要な dll がビルドされます。これは、現在 c:\windows\system にドロップして vb ランタイムに表示されます。
VB プロジェクトは c:\devprojects\vbtest にあります
C プロジェクトは c:\devprojects\portaudio にあり、プロジェクト ファイルは c:\devprojects\portaudio\build\msvc にあります。この msvc ディレクトリの下の Win32\debug に DLL が作成されます。
dll 関数を呼び出すときに、vs デバッガーが dll の c 関数をステップ実行することは可能ですか?すべてのコードなどはありますが、VS2005 がこの種の混合言語デバッグをサポートしているかどうかはわかりません。
これが可能であれば、これを実現するために Visual Studio をセットアップする方法を教えてください。
どうもありがとうデビッド
web - jQueryを使ってRSSフィードを読む方法
JavaScript または jQuery を使用して RSS フィードを解析するにはどうすればよいですか?
linux - 混合アーキテクチャーのクラスターをセットアップすることは可能ですか?
Linux を実行している x86-64 コンピューターを持っていますが、これを他の非 x86-64 Linux マシンで補いたいと考えています。
同じアーキテクチャーでなくても、別のマシンの計算能力を何らかの形で活用することは可能ですか?
2 番目の質問として、どのようなパフォーマンスの向上が利用可能で、それを機能させるには専用のソフトウェアが必要ですか? それとも、Linux はクラスター/追加のマシンを追加の CPU として抽象化できますか?
encryption - C ++ / CLI / clr DLLとAssembly.Load()の暗号化
彼ら。私は自分が所属するオンラインコミュニティのクライアントソフトウェアを開発しています。クライアントを作成できるようにするために、所有者とWebマスターは、コードを暗号化することを要求します(難読化されているだけではありません)。私のプロジェクトのほとんどはVB.NET(F3.5)で書かれており、パフォーマンス上の理由からC ++ / CLI経由でSQLiteとlibcryptを使用しているものもあります(したがって、/ clr:safeは使用できません)。言い換えると、/ clr:safeを使用する場合、C ++ / CLIコードを作成するのは無意味です(すべてのコードをVBで作成する方がはるかに簡単です)。
これがVBプロジェクトのみの場合は、C ++ローダーを記述し、コードをストレージからメモリに復号化してから、Assembly.Load()を使用して、パブリックメソッド(メインフォームなど)を介して実行します。ただし、説明できないポリシーによっては、未確認のC ++/CLIコードでそれを実行できません。通常のDLLロードメカニズムを使用して制限なしで「安全でない」DLLを使用できるため、私は途方に暮れていますが、何らかの理由でAssembly.Load()を使用してそれを行うことはできません。それがより安全であると思われる理由がわかりません(他のオプションが利用可能である場合)。Caspol.exeは役に立ちません。たとえ役に立ったとしても、コミュニティのすべての人に、自分のマシンのアクセスセキュリティをオフにするように依頼することはできませんでした。EXEまたはDLLをメモリから直接ロードすることは現実的ではないようです(UPXは通常のDLLでそれを行いますが、では行いません。
だから私は次のように尋ねます:
C ++ / CLI DLLのMISL部分を暗号化するために使用できる方法を思いつくことができますか?(コードは通常のx86マシンコードと混ざっていると思います)。
Assembly.Loadで実行しようとしたように、未検証の.NET DLLをバイトからロードする方法はありますか?
または、CreateProcess()とLoadLibrary()はパスのみを使用するため、一時的なEXEイメージを作成して、ストレージから実行することもできます。ただし、ユーザーがイメージにアクセスできないようにする必要があるため、ディスクにイメージを書き込むのはばかげています。プライベートRAMディスクなどの揮発性のものである必要があります。何か頭に浮かぶ?(Windows 2000以降)。
どうもありがとう、
ギレ
asp.net - asp.netフォーム認証を実行しているサイトでWindowsログオン名を取得することは可能ですか?
asp.net 2.0 フォーム認証で構成された大規模なユーザー ベースの Web サイトがあります。ユーザーがフォーム認証を介してログインする前に、使用しているマシンで Windows ログイン名/ユーザー アカウント名を取得できますか?
どうもありがとう
visual-c++ - Boost をリリース モードとデバッグ モードで同時に使用する
タイトルはただのからかいです。:-) それが不可能であることはわかっていますが、ここに私の問題があります。
私のアプリ (実際には DLL) は Boost を使用しています。また、Boost を使用する外部 API も使用します。外部 API はもちろん、必要なリリース Boost バイナリに沿って、リリース バイナリで提供されます。
リリース モードで DLL をコンパイル/リンクしても、問題はありません。私は自分のアプリを動的な方法 (BOOST_ALL_DYN_LINK) で Boost に正確にリンクしています。デバッグ モードでは、DLL をロードできません。Boost が原因かどうかはわかりませんが、Windows は 2 つの Boost (外部ライブラリによって呼び出されるリリースと、私のコードによって呼び出されるデバッグ) での作業を好まないのではないかと思います。
自分のコードをリリース Boost と静的にリンクすると、うまく機能しますか?
イベント ビューアーには何もないので、CRT とは関係ないと思います。
Visual Studio 2005 SP1 を使用しています。
ありがとう。
java - JCheckbox を使用して「混合状態」を表示できますか
Windows では、グレー表示された JCheckbox を表示して、それが表すデータのコレクションがすべての項目に同じ値を持たないことを示すことができます。
これは JCheckBox でも可能ですか? どうすればいいですか?(それを上書きしない方法があることを願っています)
ありがとう