none
C:\ドライブ下のフォルダに入れたソフトが起動後すぐに落ちてしまう RRS feed

  • 質問

  • 現在、インストーラを使わず手動でソフトを展開してもらうソフトを配布しています。(フリーソフトのよくある形態)

    そこで、問題がありました。C:\ドライブ直下にフォルダを1つ設け、その中にexeファイルを置きソフトを起動させていたのですが、windows8.1から、フォームが表示されたあと、警告なしで閉じられてしまうという現象が発生してしまいました。

    windows7などでは問題なく起動できており、Windows10でも起動できることを確認しています。

    UACによる影響ではないかという情報はあるのですが、ファイルが作成できない、保存できないという記事などで、ソフトが起動しないという情報が見当たりませんでした。

    Windows8.1での起動しない症状が出るという報告を受けておりまして、windows8.1ではC:\ドライブ直下は、公式的にダメなのかどうか。

    また、対処方法としては何があるのかを質問します。

    何か情報はないでしょうか? よろしくお願いします。

    環境:Windows8.1 User権限は基本のまま。VB.netで作成したソフト。

    2017年1月6日 4:12

回答

  • こんにちは。

    単純にCドライブ直下はダメではなく、やはり権限の問題にような気もしますが…。
    (Win8.1でC直下がダメだという情報がもしあった場合はそうかもしれないですけど)

    • UACをオフにしてみる
    • ドキュメントフォルダ内で実行してみる
    • 管理者権限でアプリケーションを起動してみる

    など試した結果を提示されてはどうでしょうか。

    2017年1月6日 4:17
    モデレータ
  • 殻空 さま よろしく。

    OS の種類は無関係な気がしています。
    当初のファイルを配置する時に、
    ドライブルート直下にファイルがあって、それをコピーする際に、
    ユーザーが操作すると問題無くても、
    Robocopy の様に、ACL を素直にコピーしてしまうプロセスが噛むと、
    システム属性等が付加され、特異なファイルやフォルダが構成されます。
    (ユーザーからは見えなくなる 参考:http://shiroyuki-mot-says.blogspot.com/2015/09/pc-root-directory-notice.html
    上記の点を踏まえ、
    コピー先ではなく、コピー元に、
    ドライブルート直下のファイルがある場合には、フォルダを設けて収める事をお試しになっては如何ですか?。

    2017年1月6日 4:40
  • 単純に外部のiniファイルに読み書きを行うプログラムを作成し、Windows 8.1でご質問の通りCドライブ直下にフォルダーを作成しその中にプログラムを配置しして実行してみましたが再現できませんでした。(正しく起動しました)

    セキュリティソフトに止められているということはないでしょうか?セキュリティソフトが常駐している場合は一度停止させて実行してみてどうでしょうか?

    あとは、プログラムの特定の処理が原因で閉じてしまう(閉じられてしまう)という可能性を調べることで原因の追究につながるかもしれません。VB.netで作成されたソフトということですが、単純に一番シンプルなフォームアプリケーションを作成して再現するか、それで再現しない場合は、既存のソフトで原因の可能性があると思われる部分のコード(例えば外部のファイルの入出力にかかわる部分など)を削っていき再現するかどうかを調査するのはどうでしょうか?

    2017年1月6日 5:27
  • kenjinote様 返信ありがとうございます

    実験までしていただき、誠にありがとうございます。

    解決しましたので、回答を残しておきます。

    こちらもで他の方の返信から、調査してみたところ、原因はソフトにありました。

    フォルダの名称を変更してみると動作をするという現象が発生しており、起動時のファイルに問題があるのではないかと調査してところ、VB.netで使用しているuser設定ファイル(Appフォルダに入るuser.configファイル)に問題がありました。

    通常このファイルは、HTML形式なのですが、化けてしまったのかバイナリデータの0000を羅列した意味不明なファイルになっていました。

    何らかの問題で、保存時に破損したかおかしなデータを書いてしまったため、起動ができなくなっていたようです。

    (一か所にエラーを集めるイベントを組んでいたため、ログにうまく書けずに、エラーが握り潰されていました)

    フォルダを一階層深くするとか、名前を変えたり、フォルダを変えたりして動いたのは、user.configのアドレスが変わるためでした。

    たいへんご迷惑をおかけしました。

    皆様のアドバイスに感謝いたします。ありがとうございました。

    • 回答としてマーク 殻空 2017年1月6日 7:28
    2017年1月6日 6:17

すべての返信

  • こんにちは。

    単純にCドライブ直下はダメではなく、やはり権限の問題にような気もしますが…。
    (Win8.1でC直下がダメだという情報がもしあった場合はそうかもしれないですけど)

    • UACをオフにしてみる
    • ドキュメントフォルダ内で実行してみる
    • 管理者権限でアプリケーションを起動してみる

    など試した結果を提示されてはどうでしょうか。

    2017年1月6日 4:17
    モデレータ
  • 殻空 さま よろしく。

    OS の種類は無関係な気がしています。
    当初のファイルを配置する時に、
    ドライブルート直下にファイルがあって、それをコピーする際に、
    ユーザーが操作すると問題無くても、
    Robocopy の様に、ACL を素直にコピーしてしまうプロセスが噛むと、
    システム属性等が付加され、特異なファイルやフォルダが構成されます。
    (ユーザーからは見えなくなる 参考:http://shiroyuki-mot-says.blogspot.com/2015/09/pc-root-directory-notice.html
    上記の点を踏まえ、
    コピー先ではなく、コピー元に、
    ドライブルート直下のファイルがある場合には、フォルダを設けて収める事をお試しになっては如何ですか?。

    2017年1月6日 4:40
  • Tak1waさま、返信ありがとうございます。

    確認した内容について、記載しておりませんでした。以下を実行して、動作するのを確認しております。

    1.ドキュメントフォルダやデスクトップに置いてみる

    ソフト自体はソフト専用のフォルダに入れてあり、保存ファイルもその直下にフォルダを作成して保存させています。なので、exeがあるフォルダごと、ドキュメントやデスクトップに置くとちゃんと起動して操作も行え保存もできました。

    面白いところでは、Cドライブ直下にフォルダを1つ作り、その中にさらにフォルダを作って、その中にexeを入れて起動させると起動します。

    なのでCドライブ直下のフォルダにもCドライブに関わる何かで、制限を受けるのではないか? という疑問がありました。

    2.管理者権限でアプリケーションを起動してみる

    互換性モードや管理者で起動などは、効果がありませんでした。症状が全く同じであったため。

    UACを切ってみるについては試していませんでしたので、試してみます。

    ありがとうございました。

    2017年1月6日 4:53
  • Shiro Yuki_Mot様 返信ありがとうございます。

    提示されていたページを拝見しました。とても目にうろこでした。

    コピーソフトは使用していませんが、別のPCで作成したフォルダをzip圧縮して保存し、それを解凍したものを別PCのCドライブ直下にコピーしていましたので、そこが問題だったのかも知れません(ユーザー操作だが、フォルダが別PCだから?)

    コピーした際の属性を調べてみます。

    ありがとうございました。

    2017年1月6日 5:02
  • 単純に外部のiniファイルに読み書きを行うプログラムを作成し、Windows 8.1でご質問の通りCドライブ直下にフォルダーを作成しその中にプログラムを配置しして実行してみましたが再現できませんでした。(正しく起動しました)

    セキュリティソフトに止められているということはないでしょうか?セキュリティソフトが常駐している場合は一度停止させて実行してみてどうでしょうか?

    あとは、プログラムの特定の処理が原因で閉じてしまう(閉じられてしまう)という可能性を調べることで原因の追究につながるかもしれません。VB.netで作成されたソフトということですが、単純に一番シンプルなフォームアプリケーションを作成して再現するか、それで再現しない場合は、既存のソフトで原因の可能性があると思われる部分のコード(例えば外部のファイルの入出力にかかわる部分など)を削っていき再現するかどうかを調査するのはどうでしょうか?

    2017年1月6日 5:27
  • kenjinote様 返信ありがとうございます

    実験までしていただき、誠にありがとうございます。

    解決しましたので、回答を残しておきます。

    こちらもで他の方の返信から、調査してみたところ、原因はソフトにありました。

    フォルダの名称を変更してみると動作をするという現象が発生しており、起動時のファイルに問題があるのではないかと調査してところ、VB.netで使用しているuser設定ファイル(Appフォルダに入るuser.configファイル)に問題がありました。

    通常このファイルは、HTML形式なのですが、化けてしまったのかバイナリデータの0000を羅列した意味不明なファイルになっていました。

    何らかの問題で、保存時に破損したかおかしなデータを書いてしまったため、起動ができなくなっていたようです。

    (一か所にエラーを集めるイベントを組んでいたため、ログにうまく書けずに、エラーが握り潰されていました)

    フォルダを一階層深くするとか、名前を変えたり、フォルダを変えたりして動いたのは、user.configのアドレスが変わるためでした。

    たいへんご迷惑をおかけしました。

    皆様のアドバイスに感謝いたします。ありがとうございました。

    • 回答としてマーク 殻空 2017年1月6日 7:28
    2017年1月6日 6:17