問題タブ [winsxs]
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.
c++ - Vista および 7 での winsxs マージ モジュールに関するインストール エラー 1920 への対処方法
msi パッケージをインストールしようとすると、Vista と 7 でのみエラーが発生します。
C++ 9 CRT Winsxs MSM マージ モジュールを使用してセットアップをビルドすると、Vista または 7 でこのエラーが発生します。
C および C++ 7 ランタイム ライブラリを使用する場合、この問題は発生しませんが、古いバージョンの MS Visual Studio で exe をビルドする必要があります。
どうすればそれに対処できるか考えている人はいますか?
dll - マージモジュールを?
ここで前に述べたvistaと7にプロジェクトをインストールする際に問題が発生しました。
Vistaおよび7のwinsxsマージモジュールに関するインストールエラー1920に対処するにはどうすればよいですか?
問題の投稿は私のものと似ているかもしれませんが、解決策の作者が試してみました。 comctl32.msm(マージモジュール)がVistaで失敗する
.dllファイルをvistaまたは7のwinsxsフォルダーに置き換えたいのですが、それはできますか?どうすればいいですか?
よろしく、
とぎかん
windows-7 - Microsoft.VC80.MFC ファイルがないのはなぜですか?
VS2005 がインストールされた新しい Win7 マシンを入手しました。Manifest.bin にあるマニフェストでビルドされた MyApp.exe を起動しようとしました。
...
...
その結果、「サイド バイ サイド構成が正しくないため、アプリケーションを開始できませんでした...
イベントビューアーは理由を詳しく教えてくれました:
"c:\Xxx\MyApp.exe" のアクティベーション コンテキストの生成に失敗しました。依存アセンブリ Microsoft.VC80.MFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053" が見つかりませんでした。詳細な診断には、sxstrace.exe を使用してください。
そのため、winsxs フォルダーを参照しましたが、実際にはすべての「4053 フォルダー」がありませんでした。次に、Manifest.bin を編集し、4053 を 4927 に置き換えました。別のバージョンでエラーが再発しました。次に、msvcr80.dll の「4927-folder」を取得しましたが、mfc80.dll の「4927-folder」がないことがわかりました。
2 つの質問:
-mfc80.dll の「4927 フォルダー」がないのはなぜですか?
-すべての「4053 フォルダー」を取得するには?
ありがとう & BR -マティ
vmware - VMWare でのインストールのテスト
VC80.CRT など、WinSxS に含まれる VS2005 依存関係用のいくつかのマージ モジュールを含む InstallShield 単一実行可能インストールを作成しました。リモートで作業していますが、テスターが XP マシンでインストールを実行すると、問題なく動作します。また、必要な VC80.CRT バージョンが欠落している XP マシンで実行すると、インストールが正常にインストールされることも確認しました。しかし、テスターが VMWare イメージ (XP) でインストールを実行すると、マージ モジュールがインストールされません。
VMWareについては何も知りません。誰かが「まあ、まあ!」を提供できますか?これについての答えのタイプは?VMWare イメージにマージ モジュールをインストールすることは期待できないことを伝えたいと思います。または、マージ モジュールを VMWare で適切にインストールする方法はありますか?
ありがとう!
c++ - サイド バイ サイドの狂気 - 同じコンピューターでバイナリを実行する
これが私の構成です:
- コンピュータ A - Windows 7、MS Visual Studio 2005、Win7 互換用のパッチ (8.0.50727.867)
- コンピュータ B - Windows XP SP2、MS Visual Studio 2005 がインストールされている (8.0.50727.42)
私のプロジェクトには、いくつかの外部依存関係 (事前にビルドされた DLL - Aでビルドするか、インターネットからダウンロードしたもの)、ソースからビルドされた 2 つの DLL、および 1 つの実行可能ファイルがあります。私は主にAで開発していますが、すべて問題ありません。ある時点で、コンピューターBでプロジェクトをビルドしようとし、ビルド済みの DLL を出力フォルダーにコピーします。すべてが正常にビルドされますが、アプリケーションを起動しようとすると、
アプリケーションを正しく初期化できませんでした (0xc0150002)....
イベント ログには、次の 2 つが含まれます。
依存アセンブリ Microsoft.VC80.CRT が見つかりませんでした。最後のエラーは、参照されたアセンブリがシステムにインストールされていませんでした。
加えて、もう少し面白い
some.dll のアクティベーション コンテキストの生成に失敗しました。参照エラー メッセージ: 操作は正常に完了しました。
この時点で、私は自分の Google-Fu を試していますが、無駄です。ほとんどすべてのヒットは、Visual Studio がインストールされていないマシンでバイナリを実行することに関するものです。ただし、私の場合、実行可能ファイルは、ビルドされたコンピューターで実行できません。
次のステップは依存関係ウォーカーを試すことでしたが、それは私をさらに困惑させました-同じボックスのソースから構築された私のDLLは見つけることができませんがMSVCR80.DLL
、MSVCP80.DLL
実行可能ファイルはこれら2つのDLLに関しては問題ないようです. MSVC?80.DLL
s が見つかることを示していますが、DLL の 1 つを開くと、見つからないと表示されます。それは私が何をすべきか完全に考えていないところですので、親愛なるスタックオーバーフローにお願いします:)
横並びの全体については少しぼやけていることを認めますので、このトピックに関する一般的な読み物も高く評価されます.
windows - WinSxS マニフェストを使用して古いバージョンの DLL にリダイレクトする方法は?
MSHTML を使用するアプリケーションがあるとします。IE9 ベータ版をインストールすると MSHTML が更新され、アプリケーションが壊れます。IE8 dll のコピーがまだ WinSxS フォルダーに存在することがわかったので、プログラムを再コンパイルせずにそれらを使用できるのではないでしょうか? WinSxSでできますか?
長い間検索しましたが、IE9 (%SYSTEMROOT%\system32 にあります) の代わりに IE8 MSHTML (WinSXS にあります) を使用するようにローダーをリダイレクトする方法がわかりませんでした。任意のアイデア/例をいただければ幸いです。
c++ - COM無料登録のデバッグ(c ++)
2つのCOMサーバーdllを使用するCOMクライアントアプリケーションを作成しました。このアプリケーションをCOM登録なしで実行したい-つまり:winsxs / .manifests
クライアントアプリケーションからCOMオブジェクトのインスタンスを作成しようとすると、(...ほぼ予想される...)「クラスが登録されていません」というメッセージが表示されます。
私は以前にその種の構成を成功させましたが、なぜこれが失敗するのか理解できません。
詳細は次のとおりです。
- 私が持っているモジュール:
- 2つのCOMサーバー(dll1.dllおよびdll2.dll)に依存するMFCクライアント
- dll1.dllCOMサーバーはdll2.dllに依存します
- dll2.dllにはCOMの依存関係はありません
私が持っているCOMオブジェクト:
- dll1.dll(.idl言語)
-
-
- dll2.dllで
-
-
- クライアントの呼び出し
-
-
- client.exe.2.manifest
-
-
sxsアクティベーションコンテキストの生成中にエラーは発生しません:-Windowsログにエラーはありません(マニフェスト構文が正しいことを意味します)-sxstraceによってエラーが検出されませんでした(ログは「INFO:ActivationContextgenerationsucceeded。」メッセージで終了します。エラーまたは疑わしいメッセージ。さらに、マニフェストが正しくロードされていることがわかります)
何か案が?
sxstraceを使用してsxsをより深くデバッグする方法はありますか?たとえば、実際に登録されたcomまたはclrクラスのリストを取得しますか?
よろしくお願いします
winapi - GetFileVersionInfo() returns wrong file's version information
I have an application that is required to check the versions of various system EXEs and DLLs to determine if they are vulnerable or not. This is a native C++ application which does not provide any specific WinSxS linkages in its manifest. On Windows 7, when I invoke GetFileVersionInfo on an absolute path, for example "c:\windows\system32\taskeng.exe", I receive the version information for "C:\Windows\winsxs\x86_microsoft-windows-taskscheduler-engine_31bf3856ad364e35_6.1.7600.16385_none_e582a352202e02c8\taskeng.exe"
So, to clarify, the version c:\windows\system32\taskeng.exe reported by Windows Explorer is 6.1.7600.16699. The version of c:\windows\system32\taskeng.exe reported by GetFileVersionInfo() is 6.1.7600.16385.
How do I force my app to not have its file redirected via WinSxS?
visual-studio-2010 - Visual Studioは、C ++プロジェクトのマニフェストファイル内にアセンブリ参照をどのように作成しますか?
Windows7とVisualStudio2010、ServicePack1を搭載した新しくインストールした開発マシンがあります。
私たちのソリューションには、いくつかのアプリケーションで使用されるC++DLLがあります。
リリース構成ではすべてが正常に機能しますが、デバッグ構成では、アプリケーションの1つを実行しようとすると、アプリケーションを正しく起動できなかったというエラーダイアログが表示されます。
これは、C++DLLのSxS構成に問題があることがわかりました。何らかの理由で、DLLのマニフェストには次の参照が含まれています。
また、私のマシンには、VC90ランタイムライブラリのデバッグバージョンがインストールされていません。
以前にも同様の問題が発生したため、使用している外部ライブラリが開発に使用しているのと同じVSバージョンでコンパイルされていることを常に確認します。
しかし、どこかにVC90DebugCRTへの参照があるようです。外部ライブラリでDependencyWalkerとPeStudioを使用してそれを理解しようとしましたが、VC90DebugCRTDllへの参照がどこにも見つかりませんでした。
Dllのリンカー設定でマニフェストファイルの生成を無効にすることで、実際に問題を修正しました。したがって、VC90 DebugCRTは、実際にはアプリケーションを実行するために必要ではありませんが、とにかく何らかの形で引き込まれます。
マニフェストファイルに含める参照をビルドプロセス中にVSがどのように決定し、この参照がどこから来たのかをどのように診断できるのか、今疑問に思っていました。
winapi - 32 ビット プロセスから %SystemRoot%\system32\calc.exe を開くと、別のファイルにリダイレクトされます。どれが、なぜ、どのように?
私は現在、ファイル形式の構造を理解するために PE ファイルをいじる C++ でいくつかのテスト コードを書いています。私のプロジェクトは 64 ビットにコンパイルするように設定されています。私のコードでは、%SystemRoot%\system32\calc.exe を開き、IMAGE_DOS_HEADER および IMAGE_NT_HEADERS 構造を読み取ります。同時に、同じ calc.exe を Notepad++ で 16 進エディター プラグインを使用して開いています。コードが読み取った値を Notepad++ と比較したところ、それらが異なることに気付きました。calc.exe を System32 から C:\Temp\calc.exe にコピーしたところ、値が一致しました。
Notepad++ は 32 ビット アプリケーションのようです (PE ファイルはチェックしていませんが、デフォルトで Program Files (x86) にインストールされているため、安全な想定のようです)。
この WinSxS は機能していますか? または、他に何が原因ですか?また、%SystemRoot%\system32\calc.exe を開く 32 ビット アプリケーションに実際に供給されるファイルはどれでしょうか?
ちょっと興味があるんだけど。これについて何か光を当ててくれてありがとう。