私のマシン名は小文字です (システムの詳細設定ダイアログの [コンピュータ名] タブで確認できます) がSystem.Environment.MachineName
、大文字で報告されます。何故ですか?私のテストでは、ロール名の大文字と小文字を区別して比較するため、これは私にとって本当の問題ですPrincipalPermissionAttribute
(私はカスタム ロールを Windows グループにマップし、私の環境は非ドメインです)。何かアドバイスはありますか?
3 に答える
Environment.MachineName
.NET 4.7.1のソースはこちら: https://referencesource.microsoft.com/#mscorlib/system/environment.cs,be0b5c103d248dce
ここに示すように p/invokes GetComputerName
: https://referencesource.microsoft.com/#mscorlib/microsoft/win32/win32native.cs,0c7d7f4f83d4ddd0
GetComputerName 関数は次のとおりです: https://msdn.microsoft.com/en-us/library/windows/desktop/ms724295(v=vs.85).aspx、次のように述べています。
GetComputerNameは、ローカル コンピューターの NetBIOS 名のみを取得します。DNS ホスト名、DNS ドメイン名、または完全修飾 DNS 名を取得するには、GetComputerNameEx 関数を呼び出します。
コンピュータ名の MSDN ( https://msdn.microsoft.com/en-us/library/ms724220(VS.85).aspx ) には、次のように記載されています。
NetBIOS 名は、文字、数字、ハイフン、およびピリオドを含む最大 15 バイトの OEM 文字で構成されます。一部の文字は、文字セットに固有です。通常、NetBIOS 名は OEM 文字セットで表されます。OEM 文字セットはロケールによって異なります。一部の OEM 文字セットは、特定の文字を 2 バイトで表します。慣例により、NetBIOS 名は大文字で表され、小文字から大文字への変換アルゴリズムは OEM 文字セットに依存します。
そのため、NetBIOS 名は慣例により大文字でありSystem.Environment.MachineName
、システムの NetBIOS 名を返します。
代わりにDns.GetHostNameを使用してください。これにより、正しい大文字と小文字が返されます (少なくとも私のコンピューターではそうです)。
このMSDNの記事によると、その大文字と小文字は区別され ませんhttp://msdn.microsoft.com/en-us/library/ms724220(VS.85).aspx
どのシナリオで、大文字と小文字を区別する比較を行っていますか?