在QT 应用运行时需要显示加载某个dll,而需要修改系统的环境变量:
- 增加环境变量:
bool AddEnvironmentPath(const QString& strPath)
{
// 取得环境变量
QByteArray variable = qgetenv("PATH");
QList<QByteArray> paths = variable.split(';');
QByteArray newPathByte = strPath.toLatin1();
// 查找是否有我们需要的
int nIndex = paths.indexOf(newPathByte);
if (nIndex < 0) //如果没有加入进去
{
paths.push_back(newPathByte);
QByteArray total;
for (QByteArray& path : paths) // 合成一个新的
total += path + ";";
// 设置系统变量
qputenv("PATH", total);
return true;
}
return true;
}
- 取得环境变量列表
bool GetEnvironmentPath(QStringList& lstPaths)
{
// 取得环境变量
QByteArray variable = qgetenv("PATH");
QList<QByteArray> paths = variable.split(';');
for (QByteArray& path : paths) // 合成一个新的
{
QString strPath = path;
lstPaths.push_back(strPath);
}
return true;
}
- 删除某个路径
bool RemoveEnvironmentPath(const QString& strPath)
{
// 取得环境变量
QByteArray variable = qgetenv("PATH");
QList<QByteArray> paths = variable.split(';');
QByteArray oldPathByte = strPath.toLatin1();
// 查找是否有我们需要的
int nIndex = paths.indexOf(oldPathByte);
if (nIndex >= 0) //如果有,删除
{
paths.removeAt(nIndex);
QByteArray total;
for (QByteArray& path : paths) // 合成一个新的
total += path + ";";
// 设置系统变量
qputenv("PATH", total);
return true;
}
return false;
}