C++之获取当前程序的路径、Windows目录的路径和系统目录的路径

在Windows操作系统中,程序的路径、Windows目录的路径和系统目录的路径通常指的是以下三个不同的概念:

当前程序的路径:指的是执行中的程序文件所在的完整路径。例如,如果你的程序名为MyApp.exe,并且它位于C:\Program Files\MyApp\目录下,那么当前程序的路径就是C:\Program Files\MyApp\MyApp.exe。你可以使用Windows API函数GetModuleFileName来获取当前程序的路径。

Windows目录的路径:通常指的是Windows操作系统安装目录的路径。对于大多数现代Windows版本(如Windows 10),Windows目录通常是C:\Windows。你可以使用Windows API函数GetWindowsDirectory来获取Windows目录的路径。

系统目录的路径:通常指的是包含系统关键文件的目录,这些文件用于支持Windows操作系统及其组件的运行。对于Windows,系统目录通常位于C:\Windows\System32(对于32位系统)或C:\Windows\SysWOW64(对于64位系统中的32位应用程序)。你可以使用Windows API函数GetSystemDirectory来获取系统目录的路径。

以下是一个简单的C++程序示例,展示了如何获取并打印当前程序的路径、Windows目录的路径和系统目录的路径:

#include <windows.h>#include <iostream>  void CopySelf(){  // 保存自身程序的路径  wchar_t szSelfName[MAX_PATH] = { 0 };  // 保存Windows目录的路径  wchar_t szWindowsPath[MAX_PATH] = { 0 };  // 保存系统目录的路径  wchar_t szSystemPath[MAX_PATH] = { 0 };  // 临时路径变量  char szTmpPath[MAX_PATH] = { 0 };  GetModuleFileName(NULL, szSelfName, MAX_PATH);  GetWindowsDirectory(szWindowsPath, MAX_PATH);  GetSystemDirectory(szSystemPath, MAX_PATH);  // 打印路径    wprintf(L"Self Path: %s\n", szSelfName);  wprintf(L"Windows Path: %s\n", szWindowsPath);  wprintf(L"System Path: %s\n", szSystemPath);}int main(){  CopySelf();  return 0;}

输出:

Self Path: D:\vs pj\opencascade\helloworld\x64\Debug\helloworld.exe

Windows Path: C:\WINDOWS

System Path: C:\WINDOWS\system32

代码解释:

 <windows.h>:这是Windows API的头文件,它包含了各种Windows系统的函数、数据类型和宏。这些函数用于访问Windows核心功能,例如获取系统目录或当前模块的文件名。  

 <iostream>:这个头文件用于输入/输出流,尽管在这段代码中它并没有被用到,因为所有路径的打印都是通过`wprintf`完成的,而不是`std::cout`。

 wchar_t:这是一个宽字符类型,用于存储Unicode字符。由于Windows API通常使用宽字符,所以这里选择了`wchar_t`。  

MAX_PATH:这是一个常量,定义了Windows系统中文件路径的最大长度。  

 GetModuleFileName(NULL, szSelfName, MAX_PATH);:这个函数调用获取当前模块的完整路径,并将其存储在`szSelfName`数组中。 

 GetWindowsDirectory(szWindowsPath, MAX_PATH);:这个函数调用获取Windows目录的路径,并将其存储在`szWindowsPath`数组中。  

 GetSystemDirectory(szSystemPath, MAX_PATH);:这个函数调用获取系统目录的路径,并将其存储在`szSystemPath`数组中。 

 wprintf:这是一个宽字符版本的`printf`函数,用于打印宽字符字符串。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Adobe Acrobat Pro DC 2023:提升工作效率,激发创意灵感 mac/win版

Adobe Acrobat Pro DC 2023是一款功能强大的PDF编辑和管理工具&#xff0c;专为现代职场人士设计。这款软件不仅继承了Adobe一贯的高品质和稳定性&#xff0c;还针对用户需求进行了诸多创新和改进。 Adobe Acrobat Pro DC 2023软件获取 首先&#xff0c;Adobe Acrobat Pro DC…

docker单节点搭建在线商城

本文档使用到的软件包以上传到资源中 目录 1. 创建容器并配置基础内容 1.1 将gpmall-repo上传到容器中 1.2 添加yum源 2. 安装基础服务 2.1 安装JAVA环境 2.2 安装Redis缓存服务 2.3 安装Elasticsearch服务 2.4 安装Nginx服务 2.5 安装MariaDB数据库 2.6 安…

C++核心编程之内存分区模型,引用,函数提高

1&#xff0c;类型分区模型 c程序在执行中&#xff0c;将内存大方向划分为4个区域 1&#xff0c;代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的 2&#xff0c;全局区&#xff1a;存放全局变量和静态变量以及常量 3&#xff0c;栈区&#xff1…

Spring框架的优点

Spring框架是一个开放源代码的J2EE应用程序框架&#xff0c;是针对bean的生命周期进行管理的轻量级容器。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题&#xff0c;提供了功能强大的IOC、AOP及Web MVC等功能。 轻量级&#xff1a;相对于EJB框架而言。 Spring 体系结…

springcloud学习过程错误

1 docker 安装 mysql 错误 通过 docker logs 发现 [ERROR] [Entrypoint]: mysqld failed while attempting to check configcommand was: mysqld --verbose --help --log-bin-index/tmp/tmp.WHijR591XAmysqld: Cant read dir of /etc/mysql/conf.d/ (Errcode: 2 - No such fil…

Windows安装SSH教程

Windows安装SSH教程 一、SSH1.SSH简介2.SSH功能3.SSH验证3.1 第一种级别&#xff08;基于口令的安全验证&#xff09;3.2 第二种级别&#xff08;基于密匙的安全验证&#xff09; 4.SSH层次4.1 传输层协议 [SSH-TRANS]4.2 用户认证协议 [SSH-USERAUTH]4.3 连接协议 [SSH-CONNEC…

node-day3-es6模块化+webpack

模块化 一、模块化分类 回顾node.js模块化&#xff1a; node.js遵循了CommonJS的模块化规范【见下文】&#xff0c;其中&#xff1a; 1.导入其它模块使用require()方法 2.模块对外共享成员使用module.exports对象 模块化的好处&#xff1a; 大家都遵守同样的模块化规范写代…

【学习笔记】开源计算机视觉库OPENCV学习方案

本文中&#xff0c;我们试图提供一些学习OpenCV的详细和实用资源&#xff0c;这些资源包括基础知识、进阶技巧以及实践项目&#xff0c;旨在帮助初学者和进阶学习者更好地掌握和使用OpenCV库。 一、学习资源 官方文档&#xff1a;OpenCV的官方文档是学习OpenCV的最佳起点。它包…

向量数据库Chroma教程

引言 随着大模型的崛起,数据的海洋愈发浩渺无垠。受限于token的数量,无数的开发者们如同勇敢的航海家,开始在茫茫数据之海中探寻新的路径。他们选择了将浩如烟海的知识、新闻、文献、语料等,通过嵌入算法(embedding)的神秘力量,转化为向量数据,存储在神秘的Chroma向量…

飞书云文档API操作详细介绍

1.场景分析 公司内部很多文档都是由多人进行维护的&#xff0c;随时发生变更&#xff0c;因此在利用这些数据的时候就需要直接读取云文档的数据&#xff0c;从而执行下一步动作。团队云文档api执行权限一般需要管理员审核才能使用。如果你就是管理员&#xff0c;那么恭喜你&am…

【DIY】钱包的“电子卫士”的制作

一、工作原理 钱包的“电子卫士”电路如图1所示&#xff0c;其核心元件是微型蜂鸣器专用音响集成电路A&#xff0c;它与压电陶瓷蜂鸣片B、电池G等组成了一个体积小巧、发声响亮的简易蜂鸣器。 平时&#xff0c;钱包通过尼龙线与插头XP相接&#xff0c;而XP插入插孔XS内&#x…

AndroidUI--setContentView

我们的Activity通常继承自Activity或者AppCompatActivity&#xff0c;这两个setContentView流程是不同的 一、继承自Activity 1、Activity.setContentView Activity中setContentVIew调用了getWindow().setContentView(view, params); getWindow返回的是mWindow&#xff0c;mWi…

iOS 中的 UITextField 如何设置才能只输入数字和小数点?

刚接触 iOS不久&#xff0c;接到一个iOS项目&#xff0c;其中有一个需求就是在一个 UITextField中只能输入数字和小数点&#xff0c;这个需求在Android中非常容易&#xff0c;只需要设置 <EditTextandroid:id"id/id_et_price"android:layout_width"match_par…

RedisDesktopManager连接Ubuntu的Redis失败解决办法

配置redis 1.设置redis在后台服务&#xff0c;修改配置文件 默认情况下是 no ,修改为yes&#xff0c;可以后台服务 2、设置redis端口&#xff0c;默认端口是6379&#xff0c;可以根据自己的需要&#xff0c;找到/et/redis/redis.conf文件, 修改port 3、设置密码 配置文件中…

ubuntu20.04“E: 软件包 vim 没有可安装候选”“/etc/apt/sources.list:7 中被配置了多次”解决方法

问题一&#xff1a;ubuntu20.04安装vim时提示“E: 软件包 vim 没有可安装候选” **解决&#xff1a;**更换下载&#xff0c;比如我原先使用的是清华源&#xff0c;后切换成阿里云源&#xff0c;ubuntu直接在“软件和更新”切换 问题一解决。 问题二&#xff1a;ubuntu20.04提…

JavaEE+springboot教学仪器设备管理系统o9b00-springmvc

本文旨在设计一款基于Java技术的教学仪器设备销售网站&#xff0c;以提高网站性能、功能完善、用户体验等方面的优势&#xff0c;解决现有教学仪器设备销售网站的问题&#xff0c;并为广大教育工作者和学生提供便捷的教学仪器设备销售渠道。本文首先介绍了Java技术的相关基础知…

华为昇腾系列——入门学习

概述 昇腾&#xff08;Ascend&#xff09;是华为推出的人工智能处理器品牌&#xff0c;其系列产品包括昇腾910和昇腾310芯片等。 生态情况 众所周知&#xff0c;华为昇腾存在的意义就是替代英伟达的GPU。从事AI开发的小伙伴&#xff0c;应该明白这个替代&#xff0c;不仅仅是…

【自动驾驶坐标系基础】Frenet坐标系和Cartesian坐标系的相互转换

Frenet坐标系和Cartesian坐标系的相互转换 2023.12.12 1 变量含义 Frenet和Cartesian相互转换即 [ s , s ˙ , s , d , d ˙ , d ] ↔ [ X , θ x , κ x , v x , a x ] [s,\dot{s},\ddot{s},d,\dot{d},\ddot{d}] \leftrightarrow[\boldsymbol{X},\theta_x,\kappa_x,v_x,a_…

【Unity开发】【VR】PICO项目在运行编辑器时无法正常显示游戏场景

【背景】 做了一个PICO项目&#xff0c;真机在手边时开发后用PC的Preview模式直接调试&#xff0c;真机不在手边时希望用VRTK的Simulation Rig&#xff0c;用键鼠模拟控制器输入进行快速调试。但是发现Simulation Rig状态下运行后&#xff0c;游戏场景变得很怪&#xff0c;很多…

机器学习之DeepSequence软件使用学习3-预测突变效应

import theano import numpy as np import sys import pandas as pd import scipy from scipy.stats import spearmanr%matplotlib inline import matplotlib.pyplot as plt我们将介绍加载模型和预测突变影响的基本函数。 下载预训练参数。 请首先使用 download_pretrained.s…