none
zipファイルの解凍エラーについて RRS feed

  • 質問

  • 現在クライアントアプリの開発をしており、ある機能が以下のような動作となっています。

    ①A.exe、B.zipをサーバーからダウンロード。
    ②A.exeがB.zipを解凍。
    ③A.exeがB.zip内のC.exeを実行。
     ※B.zip内は以下のようになっています。
     ・C.exe
     ・C.exe.config
     ・D.zip

    ②の処理で以下のエラーが発生してしまうのですが、原因は何が挙げられるでしょうか?

    別のプロセスで使用されているため、プロセスはファイル 'C.exeの配置先\D.zip' にアクセスできません。
       場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
       場所 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
       場所 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
       場所 System.IO.File.OpenFile(String path, FileAccess access, SafeFileHandle& handle)
       場所 System.IO.File.SetLastWriteTimeUtc(String path, DateTime lastWriteTimeUtc)
       場所 System.IO.Compression.ZipFileExtensions.ExtractToFile(ZipArchiveEntry source, String destinationFileName, Boolean overwrite)
       場所 System.IO.Compression.ZipFileExtensions.ExtractToDirectory(ZipArchive source, String destinationDirectoryName)

    セキュリティソフトのスキャンとバッティングしたのかもと思いましたが、2年以上同じ処理で動作しており2019/11中旬辺りから発生し始めたため、WindowsUpdateが関連しているのではないかと考えております。

    開発言語:C#
    開発環境:VisualStudio2017
    ※初めての投稿のため、至らぬ点がありましたらご指摘願います。
    2019年12月18日 2:21

回答

  • 今の情報だけだと、Windows Update が原因とは言い切れないような…?
    数年の稼働実績を元に、セキュリティソフトとのバッティングがない…と言い切るには、「セキュリティソフトがまったくアップデートされていない」という論理が必要になってしまうので。

    なお、経験上、ファイルハンドルを閉じた直後にファイルハンドルを再度開こうとすると、失敗することがあります。
    継続して使うならファイルハンドルを開放しないように工夫するか、どうしても必要ならリトライを組み込んだ方が良いでしょう。
    (そういう場合はセキュリティソフト起因だと思います)

    • 回答としてマーク Rito00279 2019年12月24日 0:53
    2019年12月20日 13:13
    モデレータ
  • Rito00279さん、こんにちは。フォーラムオペレーターのクモです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    まず、ファイルにアクセスするプロセスが一つしかないであることを保証するために、使用するたびにファイル ハンドルが正しく閉じているかどうかを確認してください。

    エラー メッセージははっきり表示されていますが、ファイルにアクセスしようとしていて、別のプロセス (または同じプロセス) が何らかの処理を行っている (共有を許可しなかった) ため、ファイルにアクセスできません。

    共有アクセスを許可する必要がある場合は、開くときにFileShareのアクセス許可を有効にしてください。

    どうぞよろしくお願いいたします。 


    MSDN/ TechNet Community Support Kumo ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    • 回答としてマーク Rito00279 2019年12月24日 0:53
    2019年12月23日 1:52
    モデレータ

すべての返信

  • Rito00279さん、こんにちは。フォーラムオペレーターのクモです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    詳細な状況をご提供いただきありがとうございます。その後のご状況いかがでしょうか。 
    追加でご確認いただいたことなどあれば、追記いただくことで回答がつきやすくなります。  

    どうぞよろしくお願いいたします。

    MSDN/ TechNet Community Support Kumo ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年12月20日 4:44
    モデレータ
  • 今の情報だけだと、Windows Update が原因とは言い切れないような…?
    数年の稼働実績を元に、セキュリティソフトとのバッティングがない…と言い切るには、「セキュリティソフトがまったくアップデートされていない」という論理が必要になってしまうので。

    なお、経験上、ファイルハンドルを閉じた直後にファイルハンドルを再度開こうとすると、失敗することがあります。
    継続して使うならファイルハンドルを開放しないように工夫するか、どうしても必要ならリトライを組み込んだ方が良いでしょう。
    (そういう場合はセキュリティソフト起因だと思います)

    • 回答としてマーク Rito00279 2019年12月24日 0:53
    2019年12月20日 13:13
    モデレータ
  • Rito00279さん、こんにちは。フォーラムオペレーターのクモです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    まず、ファイルにアクセスするプロセスが一つしかないであることを保証するために、使用するたびにファイル ハンドルが正しく閉じているかどうかを確認してください。

    エラー メッセージははっきり表示されていますが、ファイルにアクセスしようとしていて、別のプロセス (または同じプロセス) が何らかの処理を行っている (共有を許可しなかった) ため、ファイルにアクセスできません。

    共有アクセスを許可する必要がある場合は、開くときにFileShareのアクセス許可を有効にしてください。

    どうぞよろしくお願いいたします。 


    MSDN/ TechNet Community Support Kumo ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    • 回答としてマーク Rito00279 2019年12月24日 0:53
    2019年12月23日 1:52
    モデレータ
  • kumo-msftWicresoft様、Azulean様

    ご回答ありがとうございます。

    今のところ原因の特定は出来ていませんが、頂いた情報を元に原因究明及び対策の検討を進めていきたいと思います。

    2019年12月24日 0:58