山豆根发射点发射点发
29
2026
03
19
2026
03
ubuntu24.04修改密码长度低于8位规则
Ubuntu系统中,修改密码长度规则通常是依赖于PAM(Pluggable Authentication Modules)模块的配置。默认情况下,Ubuntu使用了pam_pwquality模块来管理密码策略,其中包括密码长度要求。
修改密码长度规则
要修改密码长度规则,你需要编辑/etc/security/pwquality.conf文件。你可以使用文本编辑器来修改这个文件,例如使用nano或vim。
打开终端。
使用以下命令编辑
pwquality.conf文件:sudo nano /etc/security/pwquality.conf
或者使用
vim:sudo vim /etc/security/pwquality.conf
在文件中找到或添加以下行来设置密码最小长度:
minlen = 6
前面的#去掉
这里6是你希望设置的密码最小长度。你可以根据需要调整这个数字。
保存并关闭文件。如果你使用的是
nano,可以通过按Ctrl + O保存更改,然后按Ctrl + X退出;如果你使用的是vim,则可以通过输入:wq然后按Enter来保存并退出。
重启PAM服务
修改完配置文件后,为了使更改生效,你可能需要重启PAM服务或整个系统。通常,重启PAM服务就足够了。可以使用以下命令来重启PAM服务:
sudo systemctl restart pam-auth-update.service
或者简单地重启系统:
sudo reboot
验证更改
重启后,你可以通过创建一个新用户或更改现有用户的密码来验证密码长度规则是否生效:
sudo adduser newuser# 或者更改现有用户的密码:sudo passwd username
在设置密码时,系统会强制应用新的密码长度策略。
注意事项
确保设置的密码长度符合组织的安全政策。过短的密码容易被猜测或破解。
如果你在修改配置文件时遇到权限问题,确保你使用了
sudo来编辑文件。在生产环境中,更改密码策略前最好先通知所有用户,并确保他们了解新的安全要求。这有助于避免混乱和可能的用户不满。
通过上述步骤,你应该能够成功修改Ubuntu系统中的密码长度规则。
29
2025
12
28
2025
12
Emlog php网站后台编辑器等图标无法正常展示,都是小方块怎么解决?

如果是 Windows 操作系统IIS服务器部署emlog,可能会遇到浏览器找不到字体文件(woff/woff2)
产生的错误。这样会导致浏览器无法加载字体图标,这是因为服务器IIS不认woff/woff2 文件类型的
原因。以下是解决方案(也可以自己搜索:"IIS 字体不显示" ,网上也有很多解决该问题的文章):
1.打开IIS,在主界面中点击MIME类型:
2.手动添加MIME类型:
扩展名 MIME类型
.woff application/x-font-woff
.woff2 application/x-font-woff
3.添加完成后,刷新页面就行了。
如果上面方法未能解决,检查是否开启了静态 CDN,emlog 是动态系统并不支持静态CDN,开启
可能会导致字体加载出现跨域问题,无法加载,出现图标无法展示的问题,请关闭CDN。
IIS管理器在 windows控制面板 管理工具 internet信息服务器管理器中 设置中 选择网站,对应的
网站才能看到MINE设置
28
2025
12
Mscomm控件安装问题 License information for TMSComm not found(bcb6) win10
操作步骤:
1.打开delphi,菜单选择compoents->import Activex control,然后选择那个mscomm32.ocx安装即可。
2.注册MScomm控件
开始-》运行-》 regsvr32 MScomm32.ocx
如果在delphi中使用Mscomm控件出现如下错误提示:
“License information for TMSComm not found.You cannot use this control in design mode.”
则运行如下操作步骤:
{
在程序,运行中运行:regedit,进入注册表,在HEKEY_CLASS_ROOT下的LICENSES下新建项目,
项目名是:4250E830-6AC2-11cf-8ADB-00AA00C00905
选中此新建项目的对应的右边的默认右击鼠标,选择修改在数值数据中输入:
kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
28
2025
12
关于AD18中Board information的位置更改
AD18出来也有将近小半个月了,论坛里也看到有人在问以前report里的board information到哪里去了?如果你没用过pads啥的,可能看界面会懵比了
仔细看右边!!!!

没错!就是它,点开以后下拉,看到没?!大大的report~


点击它就是我们以前熟悉的东东了~
PS:不得不说AD确实进步的很快。而老牌的cadence这些功能很强大,但交互应用始终是个头疼的问题,画一般的板子我已经抛弃它了。
28
2025
12
win7电脑时间每次开机后总是自己快8小时
正确答案是打开注册表编辑器,regedit。找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation。把其中名为RealTimeIsUniversal的的值,设置为0
28
2025
12
防止程序启动两次的方法CreateMutex()
在工程文件中, WinMain函数里加上以下代码(此代码在BCB6.0下运行):
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
CloseHandle(hMutex);
MessageBox(Application->Handle, "程序已经在运行中,不能重复启动!", "提示", MB_OK +MB_ICONWARNING);
Application->Terminate();
return 0;
}
Application->CreateForm(__classid(TForm1), &Form1);
主要使用到CreateMutex()函数和GetLastError()以及一个常量ERROR_ALREADY_EXISTS.
当然, 你的程序有窗体的话, 还可以使用FindWindow().
if (handle!=NULL)
return 0;
进程的互斥运行
正常情况下,一个进程的运行一般是不会影响到其他正在运行的进程的。但是对于某些有特殊要求的如以独占方式使用串行口等硬件设备的程序就要求在其进程运行期间不允许其他试图使用此端口设备的程序运行的,而且此类程序通常也不允许运行同一个程序的多个实例。这就引出了进程互斥的问题。
实现进程互斥的核心思想比较简单:进程在启动时首先检查当前系统是否已经存在有此进程的实例,如果没有,进程将成功创建并设置标识实例已经存在的标记。此后再创建进程时将会通过该标记而知晓其实例已经存在,从而保证进程在系统中只能存在一个实例。具体可以采取内存映射文件、有名事件量、有名互斥量以及全局共享变量等多种方法来实现。下面就分别对其中具有代表性的有名互斥量和全局共享变量这两种方法进行介绍:
HANDLE m_hMutex = CreateMutex(NULL, FALSE, "Sample07");
// 检查错误代码
if (GetLastError() == ERROR_ALREADY_EXISTS) {
// 如果已有互斥量存在则释放句柄并复位互斥量
CloseHandle(m_hMutex);
m_hMutex = NULL;
// 程序退出
return FALSE;
}
上面这段代码演示了有名互斥量在进程互斥中的用法。代码的核心是CreateMutex()对有名互斥量的创建。CreateMutex()函数可用来创建一个有名或无名的互斥量对象,其函数原型为:
LPSECURITY_ATTRIBUTES lpMutexAttributes, // 指向安全属性的指针
BOOL bInitialOwner, // 初始化互斥对象的所有者
LPCTSTR lpName // 指向互斥对象名的指针
);
如果函数成功执行,将返回一个互斥量对象的句柄。如果在CreateMutex()执行前已经存在有相同名字的互斥量,函数将返回这个已经存在互斥量的句柄,并且可以通过GetLastError()得到错误代码ERROR_ALREADY_EXIST。可见,通过对错误代码ERROR_ALREADY_EXIST的检测可以实现CreateMutex()对进程的互斥。
建立互斥体,用来同步。如果一个线程获取了互斥体,则要获取该互斥体的第二个线程将被挂起,直到第一个线程释放该互斥体。
参数
lpMutexAttributes
指向一个SECURITY_ATTRIBUTES结构的指针,这个结构决定互斥体句柄是否被子进程继承。
bInitialOwner
布尔类型,决定互斥体的创建者是否为拥有者
lpName
指向互斥体名字字符串的指针。互斥体可以有名字。
互斥体的好处是可以在进程间共享
心得体会:
CreateMutex() 用于有独占要求的程序 (在其进程运行期间不允许其他使用此端口设备的程序运行,或不允许同名程序运行)。如有同名程序运行,则通过 GetLastError()得到错误代码 ERROR_ALREADY_EXIST。
刚才又执行了下得出的结果(程序名samp)
一般情况下:一进入调试阶段,进程管理器中就出现了samp进程,执行到CreateMutex时返回进程句柄,执行到if(GetLastError() == ERROR_ALREADY_EXISTS ) 进行判断时,跳过不执行if中的内容,所以表示没有互斥。
调试之前先运行debug中的samp.exe再调试:一进入调试阶段,进程管理器中就出现了两个samp进程,执行到CreateMutex时返回进程句柄,执行到if(GetLastError() == ERROR_ALREADY_EXISTS ) 进行判断时,执行if中的内容,表示有互斥。
28
2025
12
为你的C++ Builder 6 安装FastReport 4
声明:以下教程是从网上copy下来的,权当给自己留一份记录,经测试,可用。
--------------------- 本文来自 feichangfriend 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/feichangfriend/article/details/9140981?utm_source=copy
以前曾经安装过FastReport数据报表控件,觉得功能不错。现在发现网上已经有4以上的版本下载使用。于是从CCRUN上下载了FastReport V4.7.9进行安装,在下载后发现安装复杂了些,比FastReprot 2.41的版本比较没有自动安装,需要手动编译各部件。于是将安装心得记录给有需要的朋友参考。
一、 卸载旧版本
如果以前未安装过FastReport可以直接跳到下一步。如果安装过以前版本的FastReport在工具栏上会看到FastReport和FR Tools两个选项栏。首先我们要把先前的版本卸载。

打开BCB的菜单"Project"->Option。然后在Packages的标签栏项目下,找到FastReport的所有部件,如下图的FastReport2.4 ADO Components 和 FastReport 2.4 Components。分别点击它们然后点地击“Remove”按钮逐个删除。卸载完成后返回,工具栏上面的FastReport和FR Tools两个选项栏也同时被清除。

二、设定安装目录
选择一个目录进行安装,现在以D:/cb6_control目录为例,将下载的FastReport V4.7.9解压到此目录。

三、生成安装链接文件
1. 执行recomplie文件,执行文件前请先将BCB6退出。否则程序文件出现提示并不能继续安装。
2. 程序运行后出现提示,主要是目录读写权限、C++Builder是否运行、是否有其它程序运行FastReport的部件包,点击“Continue”。

3. 进入到程序界面,选择相应的参数项。
第一项“1. Select the complier”选择程序,选择C++Builer 6。
第二项“2. Select the FastReport version”选择安装FastReport的版本,选择Enterprise。
第三项“3. Select the TeeChart version”,如果不知道的情况下请选择TeeChartStd。
第四项“4.What you want to do”,把“Choose Language to”的选择改为“Chinese”中文版。
完成后点击“Complier”,然后程序将FastReport安装所需要的文件生成到"LibBCB6"目录下。

3. 进入安装目录的/Res/Chinese,执行mk.bat文件生成中文菜单XML文件。并将文件复制到安装目录下的Source目录里面。注意一定要执行这个步聚,否则安装后的FastReport菜单的中文为乱码。
四、编译部件
1. 将刚才生成的LibBCB6的所有文件复制到Source目录下。
2.启动BCB。
3.将Source目录下的文件frx.inc复制到FastQB目录下。
4.编译基本部件,用BCB打开及编译以下部件。
打开FastQB目录下的fqb60.bpk,然后Complie.
打开FastScript目录下的fs6.bpk,然后Complie,编译完成后Install安装.
打开FastScript目录下的fsDB6.bpk,然后Complie,编译完成后Install安装..
打开FastScript目录下的FsADO6.bpk,然后Complie,编译完成后Install安装.
打开FastScript目录下的FsBDE6.bpk,然后Complie,编译完成后Install安装.
5.安装控件。
将LibD10目录下的所有pas文件复制到Source目录。
将Source目录下的所有pas文件复制到C++Builder安装目录的Lib/Release目录里面。
将FastScript目录下的所有pas文件复制到C++Builder安装目录的Lib/Release目录里面。
1) 用BCB打开source目录下的frx6.bpk,然后Complie,编译完成后Install安装。
2) 用BCB打开source目录下的frxDB6.bpk,然后Complie,编译完成后Install安装。
3) 用BCB打开source/ExportPack目录下的frex6.bpk,然后Complie,编译完成后Install安装。
4) 用BCB打开source/Ado目录下的frxADO6.bpk,然后Complie,编译完成后Install安装。
5 用BCB打开source/BDE目录下的frxBDE6.bpk,然后Complie,编译完成后Install安装。(可选安装)
6) 用BCB打开source/DBX目录下的frxDBX6.bpk,然后Complie,编译完成后Install安装。(可选安装)
7) 用BCB打开source目录下的frxTee6.bpk,然后Complie,编译完成后Install安装。(Chart,可选安装)
6.完成以上安装后,BCB的工具栏出现FastReport 4.0 和FR4 tools的标签栏。

五、指定头文件和链接库的目录
1. 点击BCB菜单“Project”->“Options”,选择“Directories/Conditionals”的标签栏。

2. 点击“Include Path”的目录选择按钮“...”,弹出界面后点击“...”选择头文件的目录,即Source目录,本例的路径为“D:/cb6_control/gastReport.v4.7.9/Source”,然后点击“Add”按钮。

3. 按照同样的方法将“Source”目录添加到“Libary Path”链接库选项。
4.点击选择左下角的Default,然后点击“OK”。

5.重新启动BCB,FastReport4正式安装完毕。

28
2025
12
BCB6默认保存项目选项defalut打钩,以后每个新建工程都一样
BCB6默认保存项目选项defalut打钩,以后每个新建工程都一样


