示例#1
0
        private void button3_Click(object sender, System.EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                System.IO.StreamReader sr = new
                                            System.IO.StreamReader(openFileDialog1.FileName);
                richTextBox3.Text = sr.ReadToEnd();
                sr.Close();
            }
            //Wczytywanie klucza wlasnego============================
            var MyIni = new IniFile(openFileDialog1.FileName);

            //Sprawdzanie poprawności konfiguracji
            if (MyIni.Read("System", "Info").Equals(windows))
            {
                MessageBox.Show("Wczytano konfigurację");

                string[] tab  = richTextBox3.Lines;
                string   temp = "";


                for (int i = 0; i < richTextBox3.Lines.Count(); i++)
                {
                    if ((tab[i].Contains("[")) && (tab[i].Contains("]")) && (tab[i] != "[Info]"))
                    {
                        temp = tab[i].Substring(1, tab[i].Length - 2);

                        for (int j = 0; j < tab.Length; j++)
                        {
                            if (checkedListBox1.Items.IndexOf(temp) >= 0)
                            {
                                //Zaznaczanie opcji w checklist
                                checkedListBox1.SetItemCheckState(checkedListBox1.Items.IndexOf(temp), CheckState.Checked);
                            }
                        }
                    }
                }
            }
            else
            {
                if (MyIni.KeyExists("System", "Info") == true)
                {
                    MessageBox.Show("Wczytany klucz nie pasuje pod ten system operacyjny! \nWczytaj inny klucz");
                }
                else
                {
                    MessageBox.Show("Klucz jest niepoprawny");
                }
            }
        }
示例#2
0
        //Obsługa przycisków programu
        private void button1_Click(object sender, System.EventArgs e)
        {
            var MyIni = new IniFile("config.ini");

            //Pętla przechodząca przez wszystkie elementy listy
            foreach (object item in checkedListBox1.Items)
            {
                //Sprawdzanie czy dany element jest zaznaczony
                //Jeśli tak to przechodzi przez procedure włączania danego klucza
                //Jeśli nie to przez procedure wyłączania klucza
                if (checkedListBox1.GetItemCheckState(checkedListBox1.Items.IndexOf(item)).ToString().Equals("Checked"))
                {
                    //Pętla przechodzi przez wszystkie sekcje w pliku konfiguracyjnym
                    foreach (string section in sectionList)
                    {
                        //Sprawdza czy atrybut 'Nazwa' z danej sekcji jest równy aktualnemu elementowi z listy
                        if (MyIni.Read("Nazwa", section).Equals(checkedListBox1.GetItemText(item)))
                        {
                            //Procedura sprawdzania poprawności aktualnej sekcji w pliku konfiguracyjnym
                            int ileS = 1, ileN = 1, ileW = 1, ileT = 1;
                            while (MyIni.KeyExists("On_sciezka_" + ileS, section))
                            {
                                ileS++;
                            }
                            while (MyIni.KeyExists("On_nazwa_" + ileN, section))
                            {
                                ileN++;
                            }
                            while (MyIni.KeyExists("On_wartosc_" + ileW, section))
                            {
                                ileW++;
                            }
                            while (MyIni.KeyExists("On_typ_" + ileT, section))
                            {
                                ileT++;
                            }
                            if (ileS == ileN && ileS == ileW && ileS == ileT && ileS > 1)
                            {
                                for (int i = 1; i < ileS; i++)
                                {
                                    //Ustawianie parametrów do funkcji, która prowadza dane do rejestru
                                    string            sciezka   = MyIni.Read("On_sciezka_" + i, section);
                                    string            nazwa     = MyIni.Read("On_nazwa_" + i, section);
                                    string            wartosc   = MyIni.Read("On_wartosc_" + i, section);
                                    string            typ       = MyIni.Read("On_typ_" + i, section);
                                    RegistryValueKind valueKind = RegistryValueKind.None;
                                    switch (typ)
                                    {
                                    case "reg_dword":
                                        valueKind = RegistryValueKind.DWord;
                                        break;

                                    case "reg_sz":
                                        valueKind = RegistryValueKind.String;
                                        break;

                                    case "reg_binary":
                                        valueKind = RegistryValueKind.Binary;
                                        break;

                                    case "reg_qword":
                                        valueKind = RegistryValueKind.QWord;
                                        break;

                                    case "reg_multi_sz":
                                        valueKind = RegistryValueKind.MultiString;
                                        break;

                                    case "reg_expand_sz":
                                        valueKind = RegistryValueKind.ExpandString;
                                        break;
                                    }
                                    //Obsługa błędów
                                    if (valueKind != RegistryValueKind.None)
                                    {
                                        try
                                        {
                                            //Wprowadzenie danych do rejestu
                                            Registry.SetValue(sciezka, nazwa, wartosc, valueKind);
                                        }
                                        catch
                                        {
                                            MessageBox.Show("Błąd wprowadzania danych do rejestru. \nSprawdź sekcję [" + section + "] w pliku konfiguracyjnym");
                                        }
                                    }
                                    else
                                    {
                                        MessageBox.Show("Błędny typ w sekcji [" + section + "]");
                                    }
                                }
                            }
                            else
                            {
                                MessageBox.Show("Błąd w sekcji [" + section + "]");
                            }
                        }
                    }
                }
                else
                {
                    //Bardzo podobna procedura jak wyżej. Jej zadaniem jest wyłączanie danych funkcji w rejestrze
                    foreach (string section in sectionList)
                    {
                        if (MyIni.Read("Nazwa", section).Equals(checkedListBox1.GetItemText(item)))
                        {
                            int ileS = 1, ileN = 1, ileW = 1, ileT = 1;
                            while (MyIni.KeyExists("Off_sciezka_" + ileS, section))
                            {
                                ileS++;
                            }
                            while (MyIni.KeyExists("Off_nazwa_" + ileN, section))
                            {
                                ileN++;
                            }
                            while (MyIni.KeyExists("Off_wartosc_" + ileW, section))
                            {
                                ileW++;
                            }
                            while (MyIni.KeyExists("Off_typ_" + ileT, section))
                            {
                                ileT++;
                            }
                            if (ileS == ileN && ileS == ileW && ileS == ileT & ileS > 1)
                            {
                                for (int i = 1; i < ileS; i++)
                                {
                                    string            sciezka   = MyIni.Read("Off_sciezka_" + i, section);
                                    string            nazwa     = MyIni.Read("Off_nazwa_" + i, section);
                                    string            wartosc   = MyIni.Read("Off_wartosc_" + i, section);
                                    string            typ       = MyIni.Read("Off_typ_" + i, section);
                                    RegistryValueKind valueKind = RegistryValueKind.None;
                                    switch (typ)
                                    {
                                    case "reg_dword":
                                        valueKind = RegistryValueKind.DWord;
                                        break;

                                    case "reg_sz":
                                        valueKind = RegistryValueKind.String;
                                        break;

                                    case "reg_binary":
                                        valueKind = RegistryValueKind.Binary;
                                        break;

                                    case "reg_qword":
                                        valueKind = RegistryValueKind.QWord;
                                        break;

                                    case "reg_multi_sz":
                                        valueKind = RegistryValueKind.MultiString;
                                        break;

                                    case "reg_expand_sz":
                                        valueKind = RegistryValueKind.ExpandString;
                                        break;
                                    }
                                    if (valueKind != RegistryValueKind.None)
                                    {
                                        try
                                        {
                                            Registry.SetValue(sciezka, nazwa, wartosc, valueKind);
                                        }
                                        catch
                                        {
                                            MessageBox.Show("Błąd wprowadzania danych do rejestru. \nSprawdź sekcję [" + section + "] w pliku konfiguracyjnym");
                                        }
                                    }
                                    else
                                    {
                                        MessageBox.Show("Błędy w sekcji [" + section + "]");
                                    }
                                }
                            }
                            else
                            {
                                MessageBox.Show("Błąd pliku konfiguracyjnego");
                            }
                        }
                    }
                }
            }
            //
            Thread.Sleep(1000);
            //Uruchamianie procesu konsoli systemu Windows, a następnie zabijanie procesu 'explorer.exe' i ponowne włączenie go
            //Ma to na celu prowadzenie zmian do systemu bez konieczności wylogowania użytwkonika
            Process cmd = new Process();

            cmd.StartInfo.FileName = "cmd.exe";
            cmd.StartInfo.RedirectStandardInput  = true;
            cmd.StartInfo.RedirectStandardOutput = true;
            cmd.StartInfo.CreateNoWindow         = true;
            cmd.StartInfo.UseShellExecute        = false;
            cmd.Start();
            cmd.StandardInput.WriteLine("taskkill /f /im explorer.exe");
            cmd.StandardInput.WriteLine("explorer.exe");
            cmd.StandardInput.Flush();
            cmd.StandardInput.Close();
            cmd.WaitForExit();
        }