使用SetEnvironmentVariable调整应用程序环境变量中的path设置
来源:互联网 发布:java执行另一个项目 编辑:程序博客网 时间:2024/06/05 15:19
在开发软件时,碰到了有一大批的dll需要加载,且这些dll中有隐式链接到其它dll情况.由于某些原因,不能将dll放入系统目录中也不能将他们放置在应用程序同一目录中.
为集中管理,将其放置到应用程序目录下的字目录MyDllPath目录下.
当使用LoadLibrary加载dll时会由于dll中存在隐式链接,且被链接的dll不在当前路径下(在MyDllPath路径下)而导致加载失败的情况.
这时,可以使用GetEnvironmentVariable/SetEnvironmentVariable来调整本应用程序的路径设定.将MyDllPath加载到本应用程序的当前路径中.这样即可正常加载所需要的dll了.
如下是修改当前应用程序目录路径的方法:
BOOL CDemoApp::SetCurrentEnvPath(){char chBuf[0x8000]={0};DWORD dwSize =GetEnvironmentVariable("path",chBuf,0x10000);CString strEnvPaths(chBuf);// 将当前路径\dll路径添加到本进程的路径中if(!::GetModuleFileName(NULL,chBuf,MAX_PATH))return FALSE;CString strAppPath(chBuf);const int nPos = strAppPath.ReverseFind(_T('\\'));if(nPos>0){// 路径中包含最后的'\\'strAppPath = strAppPath.Mid(0,nPos+1);}strEnvPaths.TrimRight(";");strEnvPaths += ";" + strAppPath +"MyDllPath;";BOOL bRet = SetEnvironmentVariable("path",strEnvPaths);return bRet;}
根据MSDN.应用程序在加载dll时,所搜索的路径如下(Windows 2000/NT):
- The directory from which the application loaded.
- The current directory.
- The system directory. Use the GetSystemDirectory function to get the path of this directory.
- The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched.
- The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
- The directories that are listed in the PATH environment variable.
更详细的信息可以参考msdn http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586%28v=vs.85%29.aspx
- 使用SetEnvironmentVariable调整应用程序环境变量中的path设置
- 设置 PATH 环境变量
- Linux设置环境变量PATH
- 设置PATH环境变量
- 设置path环境变量
- 环境变量PATH的设置
- Ubuntu环境变量PATH设置
- Ubuntu环境变量PATH设置
- ubuntu环境变量PATH设置
- Ubuntu环境变量PATH设置
- Linux 环境变量PATH设置
- Linux 环境变量PATH设置
- linux 设置环境变量path
- 如何设置环境变量Path
- 设置添加环境变量Path
- 获取和更改环境变量的值SetEnvironmentVariable()
- 修改环境变量(GetEnvironmentVariable、SetEnvironmentVariable、GetEnvironmentStrings)
- 环境变量中的JAVA_HOME path classpath 的设置与作用。
- c#窗体程序之tooltip控件显示鼠标位置
- Java 学习笔记04:Spring XML配置文件Bean
- python闭包 unboundLocalError错误解决----转载
- 快速排序
- 【转】animation-list旋转的地球以及Timer的使用
- 使用SetEnvironmentVariable调整应用程序环境变量中的path设置
- Android问答
- POJ 1226(最长公共子串含逆序)
- How to setup Wiki on CentOS
- Windows下安装Object-C开发环境
- P制,N制,奇场,偶场,隔行扫描,逐行扫描
- 【2013 中科大洋 笔试】父类指针指向子类--delete父类时。。。。。析构,构造。
- dedecms 目录结构
- JavaScript库EASELJS的第一眼映像(三)