このMSDNの記事では、ProgIDは、長さの制限を含め、いくつかの正式な要件を満たす必要があると述べています。しかし、それらが違反された場合に何が起こるかについては何も言われていません。
コードベースでProgIDが39文字より長い場所をいくつか見つけましたが、ProgIDFromCLSID()とCLSIDFromProgID()を含め、すべてが正常に機能しているようです。
これらの要件に違反することは非常に簡単なので、そのような違反の実際に起こりうる結果を知ることは非常に興味深いでしょう。
私はあなたが得るものは未定義の振る舞いだと思います。これは、正常に機能しているものからクラッシュ、子猫が食べられている、長子が犠牲になっているなど、さまざまです。
さらに重要な点として、いくつかの要件はおそらくいくつかのことを教えてくれます。
Windowsはすぐにあなたを噛まないかもしれませんが、他のものはそうかもしれません。
私はまだ答えを持っていません-私はこの問題を自分で研究しています-しかし私はこれに出くわしました:
マネージコードでは、冗長な名前空間とタイプ名を指定するのが一般的ですが、これはProgIdの最大許容長(39文字)を簡単に超える可能性があります。これを行うと、アドインをExcelに登録しようとするまで問題の兆候はありません。それでも、Excelは、詳細を提供せずに、アドインが無効であると通知するだけです。この問題を回避するには、ProgId属性を使用して、常にProgIdを明示的に指定する必要があります。また、アンダースコアはマネージコードでは有効ですが、ProgIdでは無効であることを忘れないでください。
Andrew Whitechapelによるブログで、制限は、短いバッファーを使用するプログラマーによって強制される単なる規則以上のものである可能性があることを示唆しています。