0

インストールされている Windows OS のタイプ (エディション) を検出する必要があります。タイプとは、たとえば、「ホーム」、「エンタープライズ」、または「プロフェッショナル」を意味します。理由を尋ねないでください (私はすでに要件ウィザードとの苦闘を経験しています)。

現在の問題は、Windows の型がローカライズされているように見えることです。異なる動作を行うには、switch ステートメントでそれらを使用する方法が必要です。

今、私はこれを行います:

_os = (from x in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get().OfType<ManagementObject>()
       select x.GetPropertyValue("Caption")).First().ToString().Trim();
switch (_os)
{   
    case "Microsoft Windows XP Professional":
        {
            // Do professional stuff...
            break;
        }
    case "Microsoft Windows 7 Professional":
    case "Microsoft Windows 7 Ultimate":
    case "Microsoft Windows 7 Enterprise":
        {
            // Do ultimate enterprisey professional stuff
            break;
        }
    default:
        {
            // File not found
            break;
        }
}

ローカリゼーションの問題に遭遇しないようにこれを行う方法を知っている人はいますか?

4

3 に答える 3

0

クラスのOperatingSystemSKUプロパティを参照してください。これはベースの列挙です。Win32_OperatingSystemuint

于 2013-03-19T07:42:44.970 に答える
0

On Codeproject は、これを行うための優れた記事 (dll を含む) です。

オペレーティング システムのバージョン情報を取得する - Windows 8 の場合でも!

彼はチーズを次から入手します。

C# を使用して Windows のバージョンとエディションを確認する

于 2013-03-19T07:40:45.200 に答える
0

GetProductInfoネイティブ APIを P/Invoke できます。C# での使用法と例については、こちらを参照してください。

Vista以降でのみサポートされていますが。

簡単に P/Invoked できる C++ での実行方法の例を次に示します。

XP の場合、ローカライズされていない方法でこの情報を取得する方法はないと思います。

于 2013-03-19T07:43:50.890 に答える