gpt4 book ai didi

c++ - 为什么我不能将字体文件复制到 c :\Windows\Fonts thought CopyFile

转载 作者:行者123 更新时间:2023-11-28 07:28:45 25 4
gpt4 key购买 nike

我想在我的系统中安装一个新字体,但我的代码有问题,我无法找出我犯了什么错误。在我调用 CopyFile 后,该文件不存在于 C:\Windows\字体。你能给我一些建议吗?谢谢。这是我的代码:

`//the source file
string sSourceDir = "F:\\my_job\\font\\";
//the file name
string sFontFileName = "jdqw.TTF";
string sFontName = "jdqw";
TCHAR sWinDir[MAX_PATH];

GetWindowsDirectory(sWinDir, MAX_PATH);

string sFontDir(sWinDir);
//make the path like C:\\Windows\\Fonts
sFontDir += "\\Fonts\\";
string sFOTFile = sFontDir;
sFOTFile += sFontFileName.substr(0, sFontFileName.length() - 4);
sFOTFile += ".FOT";
string source = sSourceDir;
string dest = sFontDir;
source += sFontFileName;
dest += sFontFileName;

//copy file
cout << source.c_str() << " " << dest.c_str() << endl;
cout << CopyFile(source.c_str(), dest.c_str(), FALSE) << endl;
cout << GetLastError() << endl;`

最佳答案

有一个 pretty good description by Michael Kaplan .简而言之,你不能也不应该在那里复制文件,因为它是一个虚拟 View 。相反,使用适当的方法:调用 AddFontResourceEx,传递适当的标志。如果字体在系统范围内可用,则广播 WM_FONTCHANGE。要永久安装字体,您需要管理员权限(即 UAC 提升),因为您需要在 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts 下列出字体文件名。

您可能需要考虑从您的安装程序执行这些步骤,因为它通常在必要的权限下运行。

关于c++ - 为什么我不能将字体文件复制到 c :\Windows\Fonts thought CopyFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18182527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com