怎样覆盖系统正在使用的字体

xusir98 2014-10-14 12:57:47
我想覆盖系统正在使用的字体arial.ttf,目前想法是
//1:去掉字体
if (!RemoveFontResource(strSysFile))
{
return 0;
}
//2:copy字体到系统字体目录
if (!CopyFile(strFullPath, strSysFile, FALSE))
{
return 1;
}
//3:增加字体
int nFontNum = AddFontResource(strSysFile);
if (nFontNum <= 0)
{
return 2;
}
//4:注册表永久添加字体,代码省略
在步骤1时错误,因为系统字体正在使用

但是我在win7下使用自带的工具fontview.exe就可以正常覆盖字体
why?
...全文
497 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2014-11-21
  • 打赏
  • 举报
回复
引用 1 楼 CometNet 的回复:
Windows7中,你要往系统目录删除文件、写入文件,必须有管理员权限. 另外如果是x64系统,还得注意那个路径转向. 参考API Wow64EnableWow64FsRedirection
路徑轉向,那是針對 system32 而言的,C:\Windows\Fonts 不需要。
xusir98 2014-10-18
  • 打赏
  • 举报
回复
嗯,我去试试,多谢
「已注销」 2014-10-16
  • 打赏
  • 举报
回复
事實上,用 FontView.exe 的安裝按鈕來安裝字體,並未覆蓋,只是用新的名字保存了一份而已,比如 arial_0.ttf、arial_1.ttf。用 Everything 或 WinRAR 進入字體文件夾看看就知道了。
xusir98 2014-10-15
  • 打赏
  • 举报
回复
帮帮忙,多谢
xusir98 2014-10-14
  • 打赏
  • 举报
回复
我的应用需要运行在正常模式下
赵4老师 2014-10-14
  • 打赏
  • 举报
回复
安全模式?
xusir98 2014-10-14
  • 打赏
  • 举报
回复
管理员权限已加,不可以,因为这个字体被window所调用,有什么方法可以卸载这个字体?
邓学彬 2014-10-14
  • 打赏
  • 举报
回复
Windows7中,你要往系统目录删除文件、写入文件,必须有管理员权限. 另外如果是x64系统,还得注意那个路径转向. 参考API Wow64EnableWow64FsRedirection

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧