PCにインストールされているWindowsのバージョンを識別する必要のある、自立型のC++コード(Windowsプログラムではない)があります。Windows Serverとクライアントの帯域外プログラムによる識別
カーネルのバージョン(例:GetFileVersionInfo
、ntoskrnl.exe)によって、さまざまなWindowsクライアントリリースを簡単に区別できますが、クライアントとサーバーのインストールを区別する信頼できる方法があるかどうかは疑問です。
この方法を使用してWindows Vista SP2とWindows Server 2008 SP2(両方とも6.0ビルド6002)とWindows 7とWindows Server 2008 R2(RTM用のビルド7600と6.1ビルド7601用)を区別すると問題が発生します。 SP2、両方)。 Win32 APIへのアクセスが利用できないため、レジストリを避けることは可能ですが、可能な限り確実なものは何ですか?クライアントとサーバーのOSを正しく識別する方法は、環境外で実行されるコードに対して正しく行われますか?
サーバ版のみのファイル(設定に関係なく、どのサーバ版でもインストールできることは保証されていますか?)を確認できます.Pantherフォルダをチェックしてください。保証があります)などですが、これは人々が以前に逃げ出した問題であると確信しています(うまくいけば)より優雅に解決されましたか?
:私は、あなたがバンドのチェックアウトについて何を意味するのか全くわからないんだけど(追記この質問はon SO beforeを尋ねてきたが、溶液(WMI)は、アウトオブバンドチェックするため適用できない)
純粋な好奇心の中で、なぜこれを行う必要がありますか?私は何時間も熟考しており、ユースケースを考えることはできません。 –
回復ソフトウェアの特定の機能をロックまたはロック解除することです。 –