Using system. windows. forms; using system. runtime. interopservices; using system. io; [dllimport ("kernel32.dll", setlasterror = true)] Static extern int writeprofilestring (string lpszsection, string lpszkeyname, string lpszstring); [dllimport ("user32.dll")] public static extern int sendmessage (INT hwnd, // handle to destination window uint MSG, // message int wparam, // first message parameter int lparam // Second message parameter); [dllimport ("GDI32")] public static extern int addfontresource (string lpfilename); Private void installfont () {string winfontdir = system. environment. getenvironmentvariable ("WINDIR") + "\ fonts"; string fontfilename = "ds-digital bold italic. TTF "; string fontname =" ds-digital bold italic "; int ret; int res; string fontpath; // const int wm_fontchange = 0x001d; // const int H Wnd_broadcast = 0 xFFFF; fontpath = winfontdir + "\" + fontfilename; If (! File. exists (fontpath) {file. copy (system. windows. forms. application. startuppath + "\ ds-digital bold italic. TTF ", fontpath); ret = addfontresource (fontpath); // res = sendmessage (hwnd_broadcast, wm_fontchange, 0, 0); // compiling this sentence in win7 will fail, I don't know if it is a system problem. Here it should be that sending a system message does not affect font installation, So I commented out ret = writeprofilestring ("fonts", fontname + "(TrueType) ", fontfilename );}}