CABが展開できなくなる環境がある?

Issue #993 resolved
暗黒 騎士 created an issue

攻略wikiのコメント欄に報告がありましたので転載しておきます。自分の方(1903)でも試してみましたが、展開できるようです。10月30日から突然ということですので、WindowsUpdateでCAB展開の仕様がまた変わったのかもしれません。

https://w.atwiki.jp/cwpy/pages/15.html

4月29日から使用しているver4.3、8月頃までの時点では普通に入れたcab圧縮のシナリオが、今日、何故かどれも読み込みに失敗したり、一部はそもそもリストに表示すらされなくなったりしてます。(ウイルス対策ソフトの誤反応はない)宿やパーティを変えても駄目でした。本体を新しくDLし直して、CABを入れてから起動しても同じでした。
zipやwsnなどはこれまで通り入れ、シナリオエディターの方も普通に開けます。

Comments (12)

  1. k4nagatsuki repo owner

    ありがとうございます。

    cabinet.dllを使っているcwxeditorで異常がないとすると、expandコマンドの仕様変更でしょうか。少なくともXP以前と7以降で仕様が違う事が分かっているので可能性がないとは言えません。ただ、軽く調べた限りでは情報が出てきませんでした。

    最近のWindowsのことなので、一時的なバグということもありえなくもありません。

    いずれにせよ環境の情報が出てきてからですね。

  2. 室谷恒夫

    はじめまして。wikiの方でコメントをした者です。(念のため書きますが表示されている名前は本名ではなくHNです)
    先日暗黒騎士様が返信をくださり、ありがとうございます。

    使用OSはWindows 7、バージョンは6.1(ビルド7601: Sevice Pack 1)です。
    この他、PCの再起動をしても同じ症状でした。
    他に必要な情報がありましたら教えてください。

  3. k4nagatsuki repo owner

    ありがとうございます。Windows 7はサポートが終了していてアップデートもないはずなのに、急にCABの展開ができなくなるというのはおかしいですね。CWPyはCABの展開にexpandというWindows付属のソフトを使用しています。以下の手順で、expandがどういう状態になっているか分かるかもしれません。

    1. ならかの方法でコマンドプロンプトを開きます(スタートメニューの実行欄にcmdと入力してEnter、スタートメニューのアクセサリから「コマンドプロンプト」を選択など)
    2. 黒いコンソール画面が出たら、expand /?と入力してEnterを押します。

    これはexpandの使い方を表示するコマンドです。もしexpandが使えなくなっていたり、使い方が変わっていたりしたら、想定とは異なる結果が出るはずです。その内容を教えていただけないでしょうか。

    参考までに、手許のWin10環境での実行結果は以下の通りです。

    >expand /?
    Microsoft (R) File Expansion Utility
    Copyright (c) Microsoft Corporation. All rights reserved.
    
    圧縮された 1 つ以上のファイルを展開します。
    
    EXPAND [-R] 展開元 展開先
    EXPAND -R 展開元 [展開先]
    EXPAND -I 展開元 [展開先]
    EXPAND -D CABファイル名 [-F:ファイル名]
    EXPAND CABファイル名 -F:ファイル名 展開先
    
      -R            展開されたファイルの名前を変更します。
      -I            展開されたファイルの名前を変更しますが、ディレクトリ構造を
                    無視します。
      -D            展開元にあるファイルを一覧表示します。
      展開元        展開元のファイルを指定します。ワイルドカードも使用できます。
      -F:ファイル名 CAB ファイルから展開するファイルの名前を指定します。
      展開先        展開先のファイルまたはパスを指定します。
                    展開先にはディレクトリも指定できます。
                    展開元が複数のファイルで、-R オプションが指定されていない
                    場合は、展開先はディレクトリである必要があります。
    

  4. 室谷恒夫

    k4nagatsuki様の仰る方法を試してみました。

    C:>expand /?
    'expand' は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。

    C:>expand.exe /?
    'expand.exe' は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。

    C:>expand /d VC_RED.cab
    'expand' は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。

    以上の通りでした。

  5. k4nagatsuki repo owner

    どうもexpand.exeが消滅してしまっているようですね(普通はC:\Windows\System32にあります)。この手の消滅事案ではウイルス対策ソフトを疑うのが定石なのですが、Windows標準の実行ファイルを消してしまうというのはちょっと信じがたいです(でもそれをやってしまうソフトの心当たりはある)。CWPyではなく他のところにも影響が出ているかもしれません。

    もし外部のウイルス対策ソフトを使用しているのであれば、スキャンや検知の履歴を確認して、expand.exeが隔離されていないか確認し、隔離されているようであれば復旧を試みてください。

    Microsoftのexpand.exeはLZ Expansion Utilityというパッケージに入っているようなのですが、このパッケージをWin7に新規にインストールする方法は見つけられませんでした。exefiles.comにそれらしいファイルはあったのですが、信頼していいものかは分かりかねます。もし復旧できないようであれば、最悪全てのCABシナリオを展開してしまう事が最善手になってしまうかもしれません。

  6. 室谷恒夫

    …実は、調べてみた所、expand.exeはその場所に確かに存在しています。

    外部のウイルス対策ソフトではAVGとAdwCleanerを使用しています。
    念のためそれぞれ「検疫」と「隔離」を調べてみましたが、
    expand.exeはそこに載ってはいませんでした。
    その代わりにAVGの検疫の方ではexpandと同じ場所から「idp.generic」があります。

    念のためもう一度CWPyを立ち上げてみましたが、Ask公式シナリオでもcabは「シナリオの読み込みに失敗しました。」と開けず終いでした。

  7. k4nagatsuki repo owner

    存在するのであれば、少なくともこの件ではウィルス対策ソフトは無実ですね。コマンドの実行結果から見て、関連するファイルが消されているということもないでしょう。表示されたエラーメッセージは、expand.exe自体が存在しないか見つけられない時の出力です。

    そうなると、C:\Windows\System32になぜかパスが通っていない、ということが原因として考えられます。「パスが通る」とは、実行ファイルを実行しようとした時に、その実行ファイルを探してくる場所が設定されていることです。C:\Windows\System32にパスが通っていれば、そこに存在するexpand.exeが見つかって実行できているはずです。それができないということは、以前は通っていたはずのパスがなぜか消えているのです(C:\Windows\System32は普通Windowsインストール時点でパスが通って、通らなくなるような事はないはずなので、そうした犯人が誰かという話にもなりますが、それはちょっと想像がつかないのでさておきます)。

    パスを確認したり、通したりするには以下のようにします(検索すれば他にも色々解説が見つかると思います)。

    1. コントロールパネルを開き、システム→システムの詳細設定 を選択します。
    2. 「システムのプロパティ」が開いたら、詳細設定タブを選択し、右下にある「環境変数」ボタンを押します。
    3. 「システムの環境変数」欄に変数Pathがあるので、その内容を確認し、もしC:\Windows\System32ないし%SystemRoot%\System32(この2つは実質同じ意味です)が存在していないようなら追加します。

    Pathは、Windows 10ではダブルクリックするとリストみたいに表示されて編集しやすいのですが、Windows 7ではまだ1つの長い文字列として編集する必要があるかもしれません。

    例えば値が以下のようになっているかもしれません。

    %SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;
    

    この文字列の見方ですが、実は記号;によって区切られた複数の文字列のリストになっています。

    つまり上の文字列は実際には以下のように解釈されています。

    %SystemRoot%;
    %SystemRoot%\System32\Wbem;
    %SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;
    

    ここに%SystemRoot%\System32を追加する場合は(System32は一番基本的なコマンドが入っているところなので先頭に追加した方がいいでしょう)、以下のように;を区切りにして挿入します。

    %SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;
    

    もしかしたらPath自体が消えていたりするかもしれません。そういう場合は「新規」を押してPathを追加してください。上の文字列がそのまま使えると思います。

    しかしWindowsでパスからSystem32が消えていたりPathが消えていたりというのは普通ないので、これはちょっとした超常現象です。どうしてそんなことが起こったかの原因は、私にはわかりません。

    もしかしたらそもそもパスが通っているのにそのパスが使用できない、という方向の超常現象なのかもしれませんが、そうなったら私にはもうお手上げな感じがします。

  8. 室谷恒夫

    こんばんは。今回の件でお世話になっております。

    まず結論から述べますと、行けました。
    「システムの環境変数」欄にPathは存在し、その文字列が異なるものだったので
    k4nagatsuki様が掲載された文字列に置き換えた後、
    cab形式のAsk公式シナリオや有志シナリオを一部選択したら実行してくれました。

    ちなみに、置き換える前のPathの文字列ですが…
    C:\Program Files (x86)\Common Files\Oracle\Java\javapath;
    Javaになってました。
    そういえば先日、Javaのアップデート通知が来て、その通りにしてましたが…
    (最新版は10月20日とのこと)

    何がともあれ、暗黒騎士様とk4nagatsuki様のおかげで解決ができました。
    システム関連で素人の自分に丁寧な解説や対処法を教えて頂いて、本当にありがとうございます。

    …ちなみに、今度はシナリオ選択画面において一部のcabシナリオが表示される瞬間、
    AVGが「ファイルを保護しました」と止めてくる現象が発生しています。
    (「アプリを許可」を選択すればそのシナリオはOK)
    こちらの対処法は既にネットに出ていて
    「設定⇒一般⇒ブロック及び許可するアプリ」で良いとのことのですが、
    あくまでアプリ対象なのでフォルダ内全体という形の指定はできませんね…

  9. k4nagatsuki repo owner

    ありがとうございます。

    Javaのアップデータがやってしまったということですね。最近のJavaは脆弱性も減ってきていい感じに見えていたのですがまだそんな事故が……Win7は一般にはサポート切れではありますが、企業向けの有償サポートがまだ残っていたと思うので、これはちょっとやらかしですね。念のため、Pathの文字列はどこかにバックアップしておいた方がいいかもしれません。

    AVGについては、すみません、私からは何も言えません。せめてファイルの一覧をぺたっと張りつけるようなUIが用意されていればいいのですが。

  10. k4nagatsuki repo owner

    C:\Program Files (x86)\Common Files\Oracle\Java\javapath;ですが、Javaのコマンドの実行に必要なはずなので、一応Pathの中に戻しておいた方がいいと思います。

    その他の消されてしまったPathもあるはずですが、それはさすがに分からないです。一部ソフトはインストーラがPathを追加するので(Javaはこの処理でやらかしたんだと思う)、おかしくなったら再インストールで直るかもしれません。

  11. BlinkOpera

    @k4nagatsuki
    本件、報告者の動作確認が行われており、クローズ可能です。

  12. Log in to comment