dev C plus Ответов: 2

Как установить шрифт в окне через C#


Всем привет!
Я хочу создать программу автоматической установки шрифта для окна
У меня есть файл копирования в %windir%\fonts, так что это accept denie ...
Нельзя установить какой-либо шрифт, также существует файл(шрифт)...
Это мой код
[DllImport("gdi32.dll", EntryPoint = "AddFontResourceW", SetLastError = true)]
        public static extern int AddFontResource([In][MarshalAs(UnmanagedType.LPWStr)]
                                         string lpFileName);
        int SumFileInstalled = 0;
try
            {
                string[] filePaths = Directory.GetFiles(textBox1.Text);
                string pathWin = Path.Combine(System.Environment.GetEnvironmentVariable("windir"),"Fonts");
                foreach (string temp in filePaths)
                {
                    try
                    {
                        string fileName = System.IO.Path.GetFileName(temp);
                        string destFile = System.IO.Path.Combine(pathWin, fileName);
                        System.IO.File.Copy(temp, destFile,true);
                        int result = -1;
                        int error = 0;
                        result = AddFontResource(destFile );
                        error = Marshal.GetLastWin32Error();
                        if (result == 0)
                            SumFileInstalled++;
                     }
                    catch (Exception ex)
                    {
                        int result = -1;
                        int error = 0;
                        result = AddFontResource(temp);
                        error = Marshal.GetLastWin32Error();
                        if (result == 0)
                            SumFileInstalled++;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error system, please choose folder default - "+ ex.Message, "Error", MessageBoxButtons.OK);
            }
            MessageBox.Show(SumFileInstalled.ToString()+" : installed successfully.","The finish fonts.",MessageBoxButtons.OK);


пожалуйста, помогите мне!
я использовал VS2010, win7 Pro 32bit
Спасибо всем

Sergey Alexandrovich Kryukov

Неудивительно, что доступ запрещен. Вам необходимо запустить приложение с повышенными привилегиями.
—СА

gggustafson

Где ты взял свой DllImport? Я покажу

[ DllImport ( "gdi32.dll" ) ]
статический extern int AddFontResource ( строка lpszFilename );

2 Ответов

Рейтинг:
1

Dave Kreskowiak

Обычные пользователи не могут ничего скопировать в папку под C:\Windows. Вы должны быть администратором, чтобы сделать это.

Если ваш шрифт является постоянным, вы должны быть администратором, чтобы поместить шрифт на место и изменить реестр, чтобы сохранить установленный шрифт.