OSの判別方法について

このQ&Aのポイント
  • VB.netでWindows10かWindows11を判別する方法について質問です。
  • 現在、Windows10とWindows11を判別するためのVB.netのコードを試していますが、Windows11でも動作してしまいます。
  • ご存知の方がいらっしゃいましたら、教えていただけると助かります。
回答を見る
  • ベストアンサー

OS(Win10かWin11)の判別方法について

いつもお世話になっております。 icevainと申します。 ご質問させていただきます。 VB.netでOSがWindows10ならある処理を行うというツールを考えております。 ネット上で下記のコードを見つけ試してみたのですが、Windows11でも動いてしまいます。 ここから Dim regkey As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey( "SOFTWARE\Microsoft\Windows NT\CurrentVersion", False) If regkey.GetValue("ProductName") = "Windows 10 Enterprise" _ OrElse regkey.GetValue("ProductName") = "Windows 10 Home" Then 'Windows10ということでここを抜けて然るべき処理を行います。 Else   ’Windows10以外なら終了。 Me.Close() End If ここまで お分かりの方おりましたらお知恵をお貸し頂けないでしょうか。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8003/17108)
回答No.1

レジストリでProductNameを見ても,Win11であってもWin10が返ってきます。 reg.exe query "HKLM\Software\Microsoft\windows NT\Currentversion" /v ProductName systeminfo | select-string "OS 名" のようにsysteminfoを使うか, Get-CimInstance Win32_OperatingSystem | select caption のようにWin32_OperatingSystem を使ってください。 なおこの例ではコマンドラインで行う場合ですが,VB.NETで同じことをするのは簡単ですよね。

icevain
質問者

お礼

f272さん 貴重な情報 ありがとうございます。 大変参考になりました。 今後ともよろしくお願いいたします。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4847/10260)
回答No.2

ProductNameじゃなくて、CurrentBuild を見るとビルド番号がわかるので、そこから判断するしかないようです。 ビルド番号は、 https://ja.wikipedia.org/wiki/Microsoft_Windows_10%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E5%B1%A5%E6%AD%B4 https://ja.wikipedia.org/wiki/Microsoft_Windows_11%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E5%B1%A5%E6%AD%B4

icevain
質問者

お礼

notnotさん 早々の回答ありがとうございました。 参考になりました。 今後ともよろしくお願いいたします。

関連するQ&A

  • Visual C#のエラーについて

    レジストリを読み込むときにエラーが出ます。(指定されたキャストは有効ではありません) bool b_tbar private void Form1_Load(object sender, EventArgs e) { try { Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\***", false); if (regkey == null) { b_tbar = true; return; } b_tbar = (bool)regkey.GetValue("tbar");  <ーーここでエラー regkey.Close(); } catch (Exception e1) { MessageBox.Show( e1.Message); } } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"***"); regkey.SetValue("tbar", b_tbar); regkey.Close(); } どこをどうなおしたら良いのでしょか?教えてくださいお願いいたします。

  • ファイルを開く際に規定のexeを知る方法について VB.NET

    VB.NETとFramework1.1の開発環境です。 mp3ファイルなどがダブルクリックされた際に 自動で開くアプリケーションが何なのかを知りたいのですが、 レジストリキーを調べるということで間違いはないでしょうか? それで、それを取得しようと下記のようなソースで試してみた のですが、どうしてもstrにはNothingしか入りません。 間違っている箇所などありましたらその箇所をご教授頂けないでしょうか。 宜しくお願いいたします。 Dim regkey As Microsoft.Win32.RegistryKey = _ Microsoft.Win32.Registry.ClassesRoot.OpenSubKey("mp3file\shell\open\command", False) If (regkey Is Nothing) Then Return Nothing Dim str As String str = CType(regkey.GetValue("REG_SZ"), String) Console.WriteLine(str) str = regkey.GetValue("string") Console.WriteLine(Str)

  • VB.NETで、システムのレジストリ書込が拒否されます。

    VB.NETで、システムのレジストリ書込が拒否されます。 アクセス権限変更は、どのように書けばよいでしょうか? サンプルコードを記します。 Dim rk As Microsoft.Win32.RegistryKey = _ Microsoft.Win32.Registry.CurrentUser.OpenSubKey _ ("Software\Microsoft\Windows\CurrentVersion\Policies\System", _ Microsoft.Win32.RegistryKeyPermissionCheck.Default, _ Security.AccessControl.RegistryRights.FullControl) rk.SetValue("Int", 1) rk.Close() 開発環境からの拒否メッセージは、 "要求されたレジストリ アクセスは許可されていません" 実行環境からは、 "レジストリ キーに書き込めません。" と、なります。 ご教示いただけますでしょうか。 どうぞよろしくお願いいたします。

  • 変更しても、正確なMicrosoft Updateができるでしょうか?

    こんにちは。 Windows XP Pro SP2なのですが、 「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion」 の「ProductName」をWindows XPからWindows Vistaに変更すれば変わると思うのですが、(システムのプロパティ上)WIndows ・ Microst Updateのとき、Vistaのアップデートじゃなく、Windows XP Pro SP2のアップデートができるのでしょうか? よろしくお願いします。

  • Windows Vistaの雰囲気にしたい

    こんにちは。 Windows Vistaはあまりに灰スペックで動かないので、せめて雰囲気だけは近づけたいのですが、「システムのプロパティ」の「Micorosoft Windows XP」を変えられないのでしょうか? 「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion」 の「ProductName」をWindows XPからWindows Vistaに変えれば換わるのでしょうか? また、変えた後、WindowsUpdateなどは普通に使えるのでしょうか? よろしくお願いします。

  • C# 2010 レジストリのRUNにあるキィーを削除したい

    C# 2010 レジストリのRUNにあるキィーを削除したい 操作上の都合があり複数回このルートを通過することがあります 2回目以降は存在しないキィーを削除しようとしますから、当然 key.DeleteValue("MyKey"); でエラーとなります そこで以下のようにtry,catch,finally で囲んでエラーを無視しています RegistryKey key = Registry.CurrentUser; key = key.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run",true); try { key.DeleteValue("MyKey"); } catch { } finally { } でもミットモナイです 実はキィーの存在を判定する方法が分りません ご存知のかたには常識なんでしょうが ・・・・ ぜひ御教授お願い申しあげます

  • 起動時にOS選択画面を表示させない方法

    このPCはwin95で、古くなっていらないということで貰ったもので、よくわからないのですが 起動時にOSの選択画面になって起動するまでずっと監視してないと 2000のセットアップ画面になってしまって終了させて再起動しなけれ ばいけないです(T_T) 検索をかけてBOOT.INIを編集するというのがあったので開いて ↓この部分を削除して再起動してみたのですが選択肢に2000の セットアップが残ってましたC:\$WIN_NT$.~BT\BOOTSECT.DAT="Microsoft Windows 2000 Professional セットアップ Defaultが~BOOTSECT.DATなのでここに書き込まれてるからでしょうか? どこをどうすればでなくなるでしょうか ↓はBOOT.iniを開いてコピペしました よろしくお願いします<m(__)m> [Boot Loader] Timeout=5 Default=C:\$WIN_NT$.~BT\BOOTSECT.DAT [Operating Systems] C:\$WIN_NT$.~BT\BOOTSECT.DAT="Microsoft Windows 2000 Professional セットアップ" C:\="Microsoft Windows"

  • OSがWindowsXPかの判断について

    VC++でOSによって処理内容を変更したいのですがWindowsXPの判断はどういう風にすればいいのでしょうか? NTとかだと OSVERSIONINFO info; ZeroMemory(&info,sizeof(OSVERSIONINFO)); info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); BOOL bRet; bRet = GetVersionEx(&info); if(bRet == FALSE) return FALSE; if(info.dwPlatformId == VER_PLATFORM_WIN32_NT) ・・・ のように「VER_PLATFORM_WIN32_NT」と判断できますが、 だれか教えてください。 よろしくお願いします。

  • WindowsXPのレジストリー登録による自動ログイン設定

    現在、WindowsXPに自動ログインを設定しようとしています。 フリーツールや「control userpasswords2」コマンドからその設定ができるのは わかりますが、これを直接、レジストリ登録したいと思ってます。 NT4.0では、 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "AutoAdminlogon"="1" "DefaultPassword"="Administrator" となり、これでいいと思いますが、XPでも同じで宜しいのでしょうか? つまり、"Windows NT"を"Windows XP"とする必要はないのでしょうか? 全く、レジストリー関連はわからないので、おわかりになる方、 宜しくお願いします。

  • OSをアップグレードしたらwinが変

    21インチiMacです。 購入時、OS10.4でwindows vistaをお店でインストールしてもらい利用していました。 先日、本体が重傷な故障をしてアップルに修理をお願いしました。 HDを交換、OSまで10.6にアップグレードされて戻ってきました。 データ等はすっかり消えて買ったばかりような状態ですね。 そこで問題が…windows vistaをインストールするのは初めてで、ネットで調べながらなんとかインストールできたのですが 音が出ない、付属のトランプゲームすらカクカク ディスプレイの解像度の選択肢が最適なものがなく横長 ネットで色々と調べながら試してみましたが どうしたものかお手上げです。 もしかして…OS10.6とwindows vistaという組み合わせが悪いのでしょうか? ネットでもOS10.6の場合windows7の例しか見つかりませんでしたし… 我が家のimacは家族共有で、mac派とwin派がいて、ゲームをしたいwin派から 以前のようなスムーズな動作環境を希望されているのですが難しいでしょうか? もしwindows7でなければ、という場合は2~3万円するOSを買うより 数万円プラスしてなwin機の購入も検討した方がよいでしょうか。 また、windowsをインストールしなくてもmacの中でwin対応のゲームやソフト等が使える方法があるとも聞いているのですがOS10.6でそれが可能なのでしょうか? 質問ばかりですいませんが、アドバイスよろしくお願いいたします。

    • ベストアンサー
    • Mac

専門家に質問してみよう