C# Reading the registry: ProductID returns null in x86 targeted app. “Any CPU” works fine

前端 未结 3 845
抹茶落季
抹茶落季 2021-01-11 18:53

I have recently moved to a W7 64bit machine with VS 2010. My project is set to run on Any CPU. When I change this to be targeted at x86 I noticed s

3条回答
  •  天涯浪人
    2021-01-11 19:12

    This code will get the id for all kinds of os architectures and program architectures. Could be written shorter but I like the readability

        static string GetProductId()
        {
            RegistryKey localMachine = null;
            if (Environment.Is64BitOperatingSystem)
            {
                localMachine = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64);
            }
            else
            {
                localMachine = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32);
            }
            RegistryKey windowsNTKey = localMachine.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion");
            return windowsNTKey.GetValue("ProductId").ToString();
        }
    

提交回复
热议问题