-
Notifications
You must be signed in to change notification settings - Fork 0
/
MainWindow.xaml.cs
142 lines (123 loc) · 4.94 KB
/
MainWindow.xaml.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
namespace SwitchSM
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// レジストリの状態を取得
bool isEmptyRegistry = LoadReg();
// レジストリが存在する場合
if (isEmptyRegistry)
{
// レジストリキーを取得
Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", false);
// 値を取得
int Start_ShowClassicMode = (int)regkey.GetValue("Start_ShowClassicMode");
regkey.Close();
// ONの場合
if (Start_ShowClassicMode == 1)
{
// OFFを描画
loadButton_OFF();
}
// OFFの場合
else
{
// ONを描画
loadButton_ON();
}
}
// レジストリが存在しない場合
else
{
// ONを描画
loadButton_ON();
}
Console.WriteLine(isEmptyRegistry);
}
private void loadButton_ON()
{
button1.Background = Brushes.Green;
button1.Content = "ON";
button1.Tag = 1;
osLabel.Content = "Now: Windows 11";
message1.Text = "現在はWindows11のスタートメニューになっています。\n" +
"Windows10のスタートメニューに変更する場合は「ON」をクリックしてください。";
BitmapImage bi = new BitmapImage(new Uri("pack://application:,,,/images/w11.png"));
this.logo.Source = bi;
}
private void loadButton_OFF()
{
button1.Background = Brushes.Red;
button1.Content = "OFF";
button1.Tag = 0;
osLabel.Content = "Now: Windows 10";
message1.Text = "現在はWindows10のスタートメニューになっています。\n" +
"Windows11のスタートメニューに変更する場合は「OFF」をクリックしてください。";
BitmapImage bi = new BitmapImage(new Uri("pack://application:,,,/images/w10.png"));
this.logo.Source = bi;
}
private void logOff_Msg()
{
MessageBoxResult result = MessageBox.Show("変更を適用する為に一度ログオフし、再度ログインしてください。\n\nログオフするまで設定は有効になりません。",
"メッセージ",
MessageBoxButton.OK,
MessageBoxImage.Warning);
}
private static bool LoadReg()
{
// コンピューター\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advancedを指定
Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", false);
// Start_ShowClassicModeが存在するかしないかをチェック
var Start_ShowClassicMode = regkey.GetValue("Start_ShowClassicMode");
// レジストリを閉じる
regkey.Close();
// 存在する場合
if (Start_ShowClassicMode != null)
{
return true;
}
// 存在しない場合
else
{
return false;
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
//Console.WriteLine(button1.Tag);
int tag = (int)button1.Tag;
Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", true);
if (tag == 1)
{
Int32 writedata = BitConverter.ToInt32(BitConverter.GetBytes(0x00000001), 0);
regkey.SetValue("Start_ShowClassicMode", writedata, Microsoft.Win32.RegistryValueKind.DWord);
// OFFを描画
loadButton_OFF();
// ログオフメッセージを表示
logOff_Msg();
}
else if (tag == 0)
{
//キーの値の削除
regkey.DeleteValue("Start_ShowClassicMode");
// ONを描画
loadButton_ON();
// ログオフメッセージを表示
logOff_Msg();
}
}
}
}