none
.NET 4.0 の 元年設定について RRS feed

  • 質問

  • 質問失礼いたします。

    使用環境 Win10 64ビット  .NET Framework4.0 の x86 ターゲットで

    動く業務用プログラムを使用しています。

    Windowsアップデートの影響と思われますが、ある時期より元年表示されるようになりました。

    ただしシステム上では 令和○○年○○月○○日 〇の部分だけ入力する仕様となっており

    伝票作成時にTODAYを参照するのですが、令和元年年〇〇月○○日となってしまいます。

    令和01年表示に戻したいのですが、管理しているレジストリが見当たりません。

    HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\AppContext

    のAppContext がPC上に見当たらないため変更できない状態です。

    変更箇所・方法など分かりましたら回答お願い致します。


    2019年6月19日 9:06

すべての返信

  • 存在しないならそのキーを作れば良いとは思いますが、それで効果がなかったのでしょうか?
    2019年6月19日 13:52
    モデレータ
  • Kentopiaさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    >Windowsアップデートの影響と思われますが、ある時期より元年表示されるようになりました。
    →どんなアップデートを行いましたか。これについてもっと詳しく教えてください。

    そしこのプログラムがどのように時間を設定するのか知っていますか。

    ご返信をお待ちしております。どうぞよろしくお願いいたします。


    MSDN/ TechNet Community Support Haruka

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

    2019年6月21日 8:38
    モデレータ
  • 返信が遅くなり申し訳ありません。

    >どんなアップデートを行いましたか。これについてもっと詳しく教えてください。

    すみませんがWindowsUpdateの更新履歴も確認しましたが

     .NetFrameworkの更新が見当たりませんでした。

     にもかかわらず現状 元年年の表示がされております。

    そしこのプログラムがどのように時間を設定するのか知っていますか。

    HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\.NETFramework\AppContext

    の値が影響すると聞いているのですが変更方法が分からない為、手が付けられていません。

    2019年6月23日 0:11
  • 返信が遅くなり申し訳ありません。

    >存在しないならそのキーを作れば良いとは思いますが、それで効果がなかったのでしょうか?

    →あまりレジストリの変更に詳しくない為 階層(フォルダ?)を増やす方法が分からなかった為

     キーは追加できていない状態です。

     .NetFramework の中で右クリックからキーの追加のメニューは出るのですが階層(Appcontext)が増やせず

    下記のような設定に変更の手順が分かっていない状態です。

    Key     HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AppContext
    Name    Switch.System.Globalization.FormatJapaneseFirstYearAsANumber
    Type    REG_SZ
    Value   1

    2019年6月23日 0:16
  • よく見たら Windows 10 でしたね、すみません。
    Windows 10 では .NET Framework 4.6 以上になっていますので、app.config(実際には「〇〇.exe.config」)に記述する必要があるようです。

    https://qiita.com/CodeOne/items/97c5a84cfa7376cbb629#net-46-%E4%BB%A5%E9%99%8D%E3%81%A7%E5%8B%95%E4%BD%9C%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88windows-formswpf

    2019年6月23日 0:19
    モデレータ
  •  .NetFramework の中で右クリックからキーの追加のメニューは出るのですが階層(Appcontext)が増やせず

    キーの追加とそれで名前を「AppContext」とすること自体は制限されていませんし、手元の Windows 10 でも作成できますのでこの状況がよくわかっていません。
    レジストリエディタのフォルダーのようなものは「キー」ですが、その認識がずれていますか?
    また、REG_SZ は「文字列値」のことです、念のため。

    ※なお、レジストリで効くかどうか試す場合は 32bit プロセスと言うことなので Wow6432Node である点をお忘れなく。

    -----

    追記

    手元で試しましたが、4.6 以上なのでレジストリでは効果なさそうです。
    (注:プロセス再起動はしましたが、OS 再起動は試していません)
    app.config 路線で検討しましょう。

    2019年6月23日 0:24
    モデレータ
  • 御回答ありがとうございます。

    使用している ~.exe.config に

    <AppContextSwitchOverrides value="Switch.System.Globalization.FormatJapaneseFirstYearAsANumber=true" />

    を追記してみましたが起動エラーとなり単純にはいかなそうです。

    お手数をおかけいたしました。他に方法が無いか確認してみます。

    2019年6月23日 1:16
  • Azuleanさんも勘違いされているようですが

    Key: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\AppContext
    Name: Switch.System.Globalization.FormatJapaneseFirstYearAsANumber
    Type: REG_SZ
    Value: true (1ではありません)

    です。AppContextはプログラムコード →  App.config → Registry の順に参照されます。

    ただし、当然ではありますが、Registryに設定した場合、すべてのプログラムに影響を与えます。

    • 編集済み 佐祐理 2019年6月23日 2:05
    2019年6月23日 1:50
  • なるほど、true でしたか。
    Blog (日本語) や docs は REG_SZ で 1 と書いているからそれを鵜呑みにしていますね。
    2019年6月23日 3:10
    モデレータ
  • そのドキュメントが誤っていたんですね。わたしはAppContextクラス

    Its value must be the string representation of a Boolean that can be parsed by the Boolean.Parse method; that is, it must be "True", "true", "False", or "false". If the runtime encounters any other value, it ignores the switch.

    を参照していました。

    2019年6月23日 14:23
  • Feedback かけた結果、docs はそのうち直る予定です
    (キーも \ が抜けていたという…)
    2019年6月26日 21:14
    モデレータ