Доступ к функциям панели управления на ПК с помощью c#

#c#

#c#

Вопрос:

Я пытаюсь получить доступ к Пуск-> Панель управления-> Региональные и языковые параметры-> Настройка-> Десятичный символ и изменить это значение из приложения Windows forms, написанного на c #. Я ищу другое решение, отличное от этого :

     System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentCulture;
string decimalSeparator = ci.NumberFormat.CurrencyDecimalSeparator;
  

потому что эти системные.Глобализация или культурные особенности не могут быть видны, если пользователь изменяет только это значение вручную на своем компьютере.

Как я могу справиться с этой проблемой, пожалуйста, помогите..

Комментарии:

1. Настройки находятся в реестре. Это поможет: technet.microsoft.com/en-us/library/cc785785 (WS.10).aspx

2. как можно получить доступ из кода? есть ли библиотека для включения?

Ответ №1:

Вот пример того, как изменить десятичный символ, а затем восстановить исходный.

 using System;
using System.Security.Permissions;
using Microsoft.Win32;

[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum, ViewAndModify="HKEY_CURRENT_USER")]

namespace sampleProgram
{
    public class sampleClass
    {
        static void Main()
        {
            // open the registry key holding control panel international settings
            using (RegistryKey international = Registry.CurrentUser.OpenSubKey("Control Panel\International", true))
            {

                // get and display the current decimal character
                string original_sDecimal = international.GetValue("sDecimal").ToString();
                Console.WriteLine("original sDecimal='"   original_sDecimal   "'");
                Console.WriteLine("Press enter:");
                Console.ReadLine();

                // temporarily change the decimal character
                string alternate_sDecimal = "@";
                international.SetValue("sDecimal", alternate_sDecimal);
                Console.WriteLine("alternate sDecimal='"   international.GetValue("sDecimal").ToString()   "'");
                Console.WriteLine("Press enter:");
                Console.ReadLine();

                // put back the original decimal character
                international.SetValue("sDecimal", original_sDecimal);
                Console.WriteLine("restored original sDecimal='"   international.GetValue("sDecimal").ToString()   "'");
                Console.WriteLine("Press enter:");
                Console.ReadLine();
            }
        }
    }
}
  

Смотрите здесь для получения дополнительной информации по этой теме: http://msdn.microsoft.com/en-us/library/microsoft.win32.registrykey (v = VS.90).aspx