【路径相关方法】1,获取各种系统路径

OS模块中获取当前文件的绝对路径的相关方法 如果给出的是一个目录和文件名(a/b/c.py)或者(a/b/c),则输出路径和文件名((“a/b”,“c.py”)) 或者 ((“a/b”,“c”));os.path.realpath(__file__) 和 os.path.dirname(path) 结合起来使用就可以的到在工作目录下的当前文件所在目录的绝对路径。main.py 脚本文件的路径是 /home/study_explore/cnn_VMASK/main.py。**作用:**获取当前执行py脚本的绝对路径(在当前工作目录下的绝对路径)... 阅读详情

1,目的


介绍获取Windows常用的一些系统路径的方法(当前用户),如:桌面、我的文档等。

并提供简单封装为类PathHelper,供以后工程快捷调用。


2,原理&实现


第一部分 常用系统及进程目录


①获取系统system32路径:(c:\windows\system32)

 使用函数GetSystemDirectory.  CString版封装:

static CString GetSysFolder ()
	{
		TCHAR szPath[100] ={0};
		GetSystemDirectory( szPath, 100 ) ;
		return CString(szPath) ;
	}
②获取系统windows路径:(c:\windows)

static CString GetWindowsFolder()
	{
		TCHAR szPath[100] ={0};
		GetWindowsDirectory( szPath, 100 ) ;
		return CString(szPath) ;
	}

③获取模块运行所在文件夹(exe所在目录)

//获取运行目录(exe所在目录)
	static CString GetModuleFolder( HMODULE hModule )
	{
		TCHAR   szPath[MAX_PATH] = {0} ;
		GetModuleFileName( hModule, szPath, MAX_PATH ) ;
		ZeroMemory(_tcsrchr(szPath,_T('\\')), _tcslen(_tcsrchr(szPath,_T('\\') ) )*sizeof(TCHAR)) ;
		return CString(szPath) ;
	}


④获取模块文件完整路径(包含exe文件名及后缀)

//获取运行模块文件全路径
	static CString GetModuleFilePath( HMODULE hModule )
	{
		TCHAR   szPath[MAX_PATH] = {0} ;
		GetModuleFileName( hModule, szPath, MAX_PATH ) ;
		return CString(szPath) ;
	}

⑤上级目录:

//得到上一级目录
	static CString GetUpFolder(CString strPath)
	{
		int nPos = strPath.ReverseFind('\\');
		return strPath.Left(nPos);
	}

附:PathHelper 小工具类头文件:

/*
提供简化的路径操作:如exe路径、系统路径、上级目录
*/


#ifndef PATH_HELPER_H
#define PATH_HELPER_H

class PathHelper
{
public:
	PathHelper(){}
	~PathHelper(){}
	
	//得到上一级目录
	static CString GetUpFolder(CString strPath)
	{
		int nPos = strPath.ReverseFind('\\');
		return strPath.Left(nPos);
	}
		
	//获取运行目录(exe所在目录)
	static CString GetModuleFolder( HMODULE hModule )
	{
		TCHAR   szPath[MAX_PATH] = {0} ;
		GetModuleFileName( hModule, szPath, MAX_PATH ) ;
		ZeroMemory(_tcsrchr(szPath,_T('\\')), _tcslen(_tcsrchr(szPath,_T('\\') ) )*sizeof(TCHAR)) ;
		return CString(szPath) ;
	}

	//获取运行模块文件全路径
	static CString GetModuleFilePath( HMODULE hModule )
	{
		TCHAR   szPath[MAX_PATH] = {0} ;
		GetModuleFileName( hModule, szPath, MAX_PATH ) ;
		return CString(szPath) ;
	}

	static CString GetSysFolder ()
	{
		TCHAR szPath[100] ={0};
		GetSystemDirectory ( szPath, 100 ) ;
		return CString(szPath) ;
	}

	static CString GetWindowsFolder()
	{
		TCHAR szPath[100] ={0};
		GetWindowsDirectory ( szPath, 100 ) ;
		return CString(szPath) ;
	}

};


#endif


第二部分 系统特殊路径


使用API: 

BOOL SHGetSpecialFolderPath(
	HWND hwndOwner,
	LPTSTR lpszPath,
	int nFolder,
	BOOL fCreate
);

参数说明:

HWND hwndOwner:如果在一个对话框或messagebox上显示时,用到的窗口句柄。这里我们单纯获取路径,一般设NULL。

LPTSTR lpszPath : 接收路径的字符串

int nFolder : 微软定义好的一个标志,用到代表要获取那种目录。

常见的如下:

  CSIDL_BITBUCKET   回收站     
  CSIDL_CONTROLS   控制面板     
  CSIDL_DESKTOP   Windows   桌面Desktop     
  CSIDL_DESKTOPDIRECTORY   Desktop的目录     
  CSIDL_DRIVES   我的电脑     
  CSIDL_FONTS   字体目录     
  CSIDL_NETHOOD   网上邻居     
  CSIDL_NETWORK   网上邻居虚拟目录     
  CSIDL_PERSONAL   我的文档     
  CSIDL_PRINTERS   打印机     
  CSIDL_PROGRAMS   程序组     
  CSIDL_RECENT   最近打开的文档     
  CSIDL_SENDTO   “发送到”菜单项     
  CSIDL_STARTMENU   任务条启动菜单项     
  CSIDL_STARTUP   启动目录     
  CSIDL_TEMPLATES   文档模板      

具体内容可以参照 shlobj.h 。

BOOL fCreate : 如果该文件夹不存在,是否创建它。 一般我们不改系统文件夹,就设FASLE。


调用示例:

        CHAR szPath[MAX_PATH] = {0}; 
	SHGetSpecialFolderPath(NULL, szPath,CSIDL_DESKTOP, FALSE);  
	MessageBox(szPath);	
效果:







Qt获取系统相关位置 在使用比如打开文件对话框(QFileDialog)时,想让其打开位置位于用户桌面等位置 Qt为我们提供了函数,使其实现起来十分方便 首先要引用头文件 #include 然后可以通过如下语句获取不同的路径 QString QStandardPaths::writableLocation(StandardLocation type) 也可以通过一下语句获取路径下的文件和文件夹 阅读详情

相关推荐

掌握C#系统特殊路径的获取方法

在计算机世界中,路径是文件系统中定位文件或目录的字符串标识。在C#中,特殊路径是指操作系统内预定义的目录位置,这些位置通常用于存储特定类型的文件,比如用户文档、应用程序数据、缓存文件等。这些系统特殊路径在C#中通过类进行管理。开发人员经常需要处理这些路径,无论是为了读写配置文件,还是为了保存用户生成的数据等。它们确保了应用程序能够高效、准确地与文件系统交互,无论是在Windows、Linux还是Mac OS X上。知晓系统特殊路径的作用及其获取方式,对于编写跨平台的应用程序至关重要。

weixin_35916518的博客 894

c语言中max_path取值怎么修改,MAX_PATH 还是 MAX_PATH + 1 ?

很多人以为 Windows 限制文件最长路径或目录最长路径是 260 个字符,所以经常写以下代码://特别加1用来保存 NUL 结束符TCHAR szPath[MAX_PATH +1];其实是错误的,MSDN 上已经说的很清楚了:In the Windows API (with some exceptions discussed in the following paragraphs), the ...

weixin_42497828的博客 1178

掌握VC++:获取系统路径的源码实现

Windows系统目录是操作系统的重要组成部分,它包含了系统运行所必需的核心文件和设置。这些目录通常存储在系统盘(通常是C盘)的根目录下,如Windows、System32和Program Files等。系统目录中的文件对于系统的启动、运行和稳定性至关重要,例如,Windows目录存储了系统核心文件和用户界面资源,而System32目录则包含了大部分的系统驱动和动态链接库(DLL)文件。系统目录的作用不仅限于存放系统文件,它们还通过预设的权限和访问控制列表(ACL)来确保系统安全。

weixin_42576467的博客 970

getSys32Path()得到系统System32路径

{得到系统C:\Windows\system32 路径} //调用Edit1.text:=getSys32Path(); function getSys32Path():string;varsPath : PCHAR ;beginGetMem(sPath,255);GetSystemDirectory(sPath,255);Result := sPa...

weixin_30765505的博客 221

SAP SD信贷管理实战:从配置到风险控制的完整指南(附后台路径)

本文详细解析了SAP SD信贷管理的完整配置流程与风险控制策略,涵盖信贷控制范围设置、风险分级机制及动态控制配置。通过实战案例和后台路径指引,帮助企业实现从客户信用评估到实时监控的全流程管理,有效降低坏账风险并优化资金安全。

3a9bq4r8t2y的博客 212

2023电视专用!安卓电子相册APP避坑指南(附开源代码)

本文针对2023年智能电视用户,提供安卓电子相册APP的避坑指南与实战教程。文章详细解析了电视端相册应用的常见广告与兼容性陷阱,并指导用户如何安全获取、部署纯净的APK应用,通过核心设置实现无广告的个性化图片轮播体验,最终打造专属的家庭回忆墙。

weixin_29012677的博客 494

511遇见易语言API模块制作取system32目录和取Windows目录

易语言调用GetSystemDirectory和GetWindowsDirectory两个API完成或取system32目录和取Windows目录的封装。 视频链接: 511遇见易语言模块API教程 GetSystemDirectory .版本 2 .DLL命令 GetSystemDirectoryA, 整数型, "kernel32", "GetSystemDirectoryA", , 目录_取system32目录 这个函数能取得Windows系统目录(System目录)的完整路径名.

511遇见 2795

疲劳容器的定义_FKM规范针对非焊接构件疲劳强度评估实例介绍(下篇)

一、写在前面FKM Inside ANSYS软件,该软件是在FKM 规范的基础上,在ANSYS Workbench内开发的进行非焊接构件及焊缝静强度和疲劳强度评估的工具包。基于ANSYS计算模型的信息,在图形用户界面定义相关设置,利用有限元分析计算结果,自动嵌入FKM规范要求的静强度计算和疲劳强度计算流程和方法,自动将应力结果和相关物理量传递给工具包,无须手动预先选择评估的热点区域,可以...

weixin_35925298的博客 1885

第五节 将系统目录信息写入文件

获取系统目录信息,并写入到文件中 windows系统通常都是默认安装在C盘中,但也可以安装在其他盘中 需要使用到的API函数 GetSystemDirectory() 获得系统目录 CreateFile() 创建一个文件 WriteFile() 写入系统目录 CloseHandle() 关掉文件句柄 代码示例 import win32gui import win32file import win32con import win32api import win32 import pywint

weixin_43496130的博客 1039

CTF---Web---文件包含---01

文章目录前言一、题目描述二、解题步骤1.查看源代码2.文件包含(/etc/passwd)3.解码总结 前言 题目分类: CTF—Web—文件包含 一、题目描述 题目:提示寻找passwd文件 二、解题步骤 1.查看源代码 提示所有图片存储路径是download.php?name=img, 此时name参数的存在就提示此题可能为“文件包含”。 2.文件包含(/etc/passwd) 两种查看方式: 2.1、访问view-source:http://192.168.87.180/download.php

qq_22160557的博客 1391

【博弈论】势博弈(potential game)、EPG以及最佳响应、Nash均衡和帕累托(pareto)最优的理解

文章目录前言一、Potential game二、Nash均衡和Pareto-optimal(帕累托最优)1.Nash 均衡2.Pareto最优三、Best response(最佳响应)四、Exact potential game(EPG)1.合作-傀儡博弈2.合作博弈3.傀儡博弈4.自激博弈5.双边对称交互博弈使用理解 前言 本文主要详细讲解potential game的概念以及Exact potential game 的定义和分类,以及这么博弈方法是如何在论文中引入并使用的,本文仅是对自己在该模块

weixin_44535200的博客 2万+

Android 中获取目录路径的方法

Android 中获取目录路径的方法总结一、SD 卡路径解释二、Environment1、Environment.getExternalStorageState()2、Environment.getExternalStoragePublicDirectory(String type)3、Environment.getExternalStorageDirectory()4、其他 Environment 相关三、context四、获取缓存路径 一、SD 卡路径解释 /storage/emulated/0 是

qq_36072270的博客 4956

VSCode+PlatformIO新建工程卡成狗?3步提速大法实测有效(附镜像源配置)

针对VSCode+PlatformIO新建工程时因依赖下载缓慢导致的加载慢问题,本文提供了三步核心提速方案。通过配置Python环境变量、修改PlatformIO插件设置以使用国内镜像源,并优化pip配置文件,实测可大幅缩短工程创建时间,有效解决创建工程卡顿的痛点。

delta的博客 709

dotnet开发基础之获取程序路径的方法

本文详细介绍了在 .NET 开发中获取程序路径的多种方法及其适用场景。常见的路径需求包括程序运行目录、当前工作目录、当前执行程序集路径、主进程路径等。文章通过对比表展示了不同方法的返回路径、适用场景及推荐程度,并提供了代码示例和详细说明。推荐使用 AppDomain.CurrentDomain.BaseDirectory 和 AppContext.BaseDirectory 作为默认方式,尤其适用于跨平台开发。此外,文章还提醒了在使用这些方法时需要注意的特别事项,并提供了一个实用工具类的封装示例,帮助开发者

dotnet研习社 1567

验证码破解2.0:Python+CV大模型搞定滑块/点选验证

核心创新:基于YOLOv8+SAM CV大模型的端到端验证码破解方案,无需人工设计特征,适配多种验证码类型;核心价值高成功率:滑块验证≥95%,点选验证≥90%,远超传统CV方案;低延迟:单验证码破解≤2秒,满足高并发采集需求;行为模拟:生成符合人类操作的轨迹,绕过行为检测;易扩展:统一架构支持新增验证码类型,仅需少量标注数据微调;技术要点采用YOLOv8实现快速目标检测,SAM实现像素级分割;生成物理规律的人类轨迹,模拟真实操作行为;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1261

【施磊】C++课程笔记目录

【C++编程】施磊老师C++笔记目录

GeniusAng的博客 4122

java 获取路径方法_【java 获取路径的方法】

一、关于绝对路径和相对路径1.基本概念的理解绝对路径:绝对路径就是番茄花园下载你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz est.txt代表了test.txt文件的绝对路径。http://www.s.com/inx.htm也代表了一个URL绝对路径。相对路径:相对于某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"/"...

weixin_39663593的博客 284

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java 获取路径的各种方法

(1)、request.getRealPath(“/”);//不推荐使用获取工程的根路径 (2)、request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,可以直接在servlet和jsp中使用 (3)、request.getSession().getServletContext().getRealPath(“/”);//

karlin999的博客 1812

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

c# 获取路径的盘符_C#获取当前系统磁盘符、系统目录、桌面等

1.获取方式如下Environment.SpecialFolder中定义了许多常用的目录//获取当前系统磁盘符方法1,返回:C:string path = Environment.GetEnvironmentVariable("systemdrive");//获取当前系统磁盘符方法2,返回:C:string path = Environment.ExpandEnvironmentVariables...

weixin_39609483的博客 3424

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VB 窗体实现文件拖拽获取路径方法

Private Sub Form_Load()    Form1.OLEDropMode = 1End SubPrivate Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)    For i = 1 To...

miaozk2006的专栏 3319

java 获取路径方法_java 获取路径的各类方法

(1)、request.getRealPath("/");//不推荐使用获取工程的根路径(2)、request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,能够直接在servlet和jsp中使用(3)、request.getSession().getServletContext().getRealPath("/");//获取工程...

weixin_39942474的博客 555

Qt程序获取执行路径等各种路径方法

那么qAPP->applicationFilePath();输出 C:/Qt/test/test.exe。那么qAPP->applicationDirPath();输出 C:/Qt/test。比如一个程序在C:/Qt/test/test.exe。

笔记本 1174

qt 获取当前路径有多少种方式

qt 获取当前路径有多少种方式

xie__jin__cheng的博客 2635

java 获取项目路径的方法

(1)、request.getRealPath("/");//不推荐使用获取工程的根路径(2)、request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,可以直接在servlet和jsp中使用(3)、request.getSession().getServletContext().getRealPath("/");//获取工程...

wangyongzhao520的博客 839

android获取各种路径的方法

android获取各种系统路径的方法 获取路径的途径: Context获取 和 Environment获取 通过Context获取的 Tables Are Context.getPackageResourcePath() 获取该程序的安装包路径 : /data/app/com.jhk.androidstudy-2/base.apk Context....

jinhuikang的博客 1万+
上一篇: MFC 设置窗口透明度
下一篇: 【磁盘处理相关方法】1,判断磁盘是否存在
逆枫゛
博客等级 码龄15年 2694粉丝 155原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆枫゛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值