首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在c程序中,我们如何获得.exe文件的完整路径?

在C程序中,我们可以使用以下方法来获得.exe文件的完整路径:

  1. 使用argv[0]参数:在C程序的main函数中,可以通过命令行参数传递给程序的argv参数来获取.exe文件的完整路径。argv[0]参数存储了程序的名称和路径信息,可以通过解析该参数来获取完整路径。
  2. 使用GetModuleFileName函数:在Windows操作系统下,可以使用GetModuleFileName函数来获取当前可执行文件的完整路径。该函数需要传入一个指向存储路径的缓冲区和缓冲区的大小,函数会将完整路径写入缓冲区中。

以下是一个示例代码:

代码语言:txt
复制
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

int main(int argc, char* argv[]) {
    char path[MAX_PATH];
    
    // 使用argv[0]参数获取路径
    printf("通过argv[0]参数获取路径:%s\n", argv[0]);
    
    // 使用GetModuleFileName函数获取路径
    GetModuleFileName(NULL, path, MAX_PATH);
    printf("通过GetModuleFileName函数获取路径:%s\n", path);
    
    return 0;
}

请注意,以上方法都是针对Windows操作系统的,如果需要在其他操作系统上获取.exe文件的完整路径,可能需要使用不同的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【C进阶】——我们写的代码是如何一步步变成可执行程序(.EXE)的?

这篇文章,我们来探讨一下,我们写的代码,是如何一步步变成可执行程序,最终运行得出结果的,一起来学习吧!!! 1....比如,我们写好了一个test.c的源文件,它需要先经过翻译环境生成可执行程序test.exe,然后再经过执行环境产生最终的结果。 2....每个目标文件由链接器(linker)捆绑在一起,形成一个单一而完整的可执行程序。 3....那我们现在vs上对该程序生成解决方案: 然后我们进入到文件所在路径进行观察: 我们发现,经过编译过程,test.c和add.c已经生成了对应的目标文件。...然后: 链接器会把这些目标文件和链接库链接在一起,最终生成可执行程序。 那因为在test.c中使用了add.c中的add函数,所以这两个源文件要被链接在一起,这我们能想通。

1.4K10
  • 一日一技:在Linux系统中如何查询正在运行的程序的路径

    我们常常会遇到这种情况,我有一个程序在 Linux 系统中运行了几个月。当我想修改它的代码时,却忘记了这个程序放在哪里。 如下图所示,忘记 test.py 这个文件在哪里了: ?...难道一个文件夹一个文件夹去寻找这个文件? 如果你的电脑是 Linux 系统,那么解决方法非常简单,不需要安装任何第三方程序。只需要几行命令即可。...首先,使用ps -aux | grep xxx找到这个程序的pid,如下图红框所示: ? 然后,使用cd命令进入/proc/文件夹,例如/proc/20623。...在这个文件夹里面,我们执行ls命令,可以看到有很多个文件。其中,我们需要的是 cwd这个文件。 这些文件都是软连接。我们可以使用ls -l cwd查看cwd这个软连接指向的真实地址。...这个地址就是我们这个程序所在的位置,如下图所示: ?

    3.5K10

    Jenkins CI 自动构建与 C-STAT 代码

    在本文中,我们将看到一个这样的嵌入式开发工具(IAR 嵌入式工作台),以及如何将 C-STAT 静态代码分析与持续集成版本 Jenkins 集成在一起,以及如何通过自动构建。 先决条件: a....IAR 命令行应用程序 IAR 系统为我们提供了一个名为 IarBuild.exe 的应用程序,该应用程序用于在命令行中执行分析。...您可以在安装路径中找到 IarBuild.exe 应用程序,如下所示。...现在我们知道了用于分析、清理、生成报告文件的命令。使用这些命令,我们可以轻松地编写批处理脚本文件 (.bat) 文件,然后在 Jenkins 中调用此批处理文件,作为预构建命令执行步骤。...但是我们可以使用以下自定义脚本来实现此目的。 我们可以获得包含低、中、高问题计数分析结果的 HTML 报告。这些值以格式 data: [0-9, 0-9 ,0-9] 在 HTML 结果文件中展现。

    1.2K30

    Windows 权限提升

    可能大家有一个这样的经历,某程序在执行过程中要求启用弹出UAC要求使用管理员权限,同意之后获得高权限,但实际上,此时操作的应用进程完整性等级为 high,UAC之前应用完整性等级为medium,本质上是以管理权限重新开启了应用程序...参考:应用程序清单 Manifest 中各种 UAC 权限级别的含义和效果 在知道这个问题的答案之前需要思考程序触发UAC的必要条件是什么?首先系统是如何知道应用程序需要提升权限?...在应用程序清单中可以声明程序的执行级别,用来获得应用程序所需要的特权,有3种设置(虽然没有该设置也是一种设置): asInvoker(跟随父进程,默认用户启动的父进程都是explorer.exe,而在UAC...C/C++项目中请在属性页——链接器——清单文件中配置相关选项。 最后生成的应用程序带有盾牌标志: ?...,我希望各位了解管理员用户是入俄在启用UAC之后如何获取High完整性的(包含在access tokens中)。

    3.7K20

    Bypass-UAC(用户帐户控制)的那些事

    一、初识UAC 1.用户帐户控制(UAC)简介 在本文中,我们将简要介绍一下用户帐户控制,即UAC。我们还将研究它如何潜在地保护免受恶意软件的攻击并忽略UAC提示可能给系统带来的一些问题。...如果我们在应用程序找到正确的dll之前,将我们自己创造的dll放入优先级更高的搜索目录让应用程序优先加载此dll文件,这就造成了dll劫持。...但这只是dll劫持的其中一种途径,他有这些途径: (1) DLL替换:用恶意的DLL替换掉合法的DLL (2) DLL搜索顺序劫持:当应用程序加载DLL的时候,如果没有带指定DLL的路径,那么程序将会以特定的顺序依次在指定的路径下搜索待加载的...此方法通常也被称为DLL侧加载 (6) 相对路径DLL劫持:将合法的应用程序复制(并有选择地重命名)与恶意的DLL一起放入到用户可写的文件夹中。在使用方法上,它与(签名的)二进制代理执行有相似之处。...白名单程序 odbcad32.exe 方法: 打开C:\Windows\system32\odbcad32.exe,然后通过以下方法打开powershell或者cmd 2.伪装进程PEB绕过UAC 上面在利用

    1.9K20

    DirectX修复工具使用技巧之三——命令行与配置文件参数介绍

    命令行与配置文件中约有90%的命令是通用的,部分特殊命令只支持命令行的配置方式,本文件将分别介绍命令行参数与配置文件参数。 命令行参数 本程序支持命令行参数提示,用户可通过/?...在本人电脑中,DirectX修复工具主程序的位置为桌面上的DirectX_Repair(Enhanced_Edition)文件夹内,因此主程序的路径为:C:\Users\zhangyue\Desktop...这里我们在cmd中写路径时,需要用英文状态的引号把路径扩上,这是因为路径中有空格,如果不加引号的话,cmd遇到空格将无法识别。.../flowsecurity – 此次运行程序时强制使用低安全级别,不论之前如如何设定。不论之前用户设定的安全级别是高或低,如果命令行中添加此条参数,则此次程序将强制以低安全级别运行程序。...如果配置文件中不写此条参数则程序默认使用正常窗口模式。效果截图可参见命令行参数3。

    2.3K10

    使用代码签名证书对EXE文件进行签名?

    有关如何使用代码签名对exe文件进行签名的分步说明是的很多开发者在Gworg申请了代码签名证书却不知道如何使用。...当可执行文件或应用程序经过代码签名时,数字代码签名将添加到文件中,其中包括有关发布者和用于签署文件的证书的信息。此数字签名是使用代码签名证书的私钥创建的,该私钥存储在证书持有者的安全设备上。...那么让我们讨论如何签署 EXE。如何对 .EXE文件进行数字签名?在开始签署 EXE 或应用程序之前,您将需要以下内容:代码签名证书:这是可用于对您的软件进行签名的数字证书。...步骤3:使用SignTool命令使用获得的证书对EXE或Windows应用程序进行签名,Signtool sign /f 的路径> /p 的密码> EXE 或 Windows...这将增加额外的安全层,证明其真实性并保证其完整性。现在您的Windows 代码签名过程已完成,是时候确保您的 EXE 已正确签名,并且您的最终用户在安装时不会遇到任何问题。让我们看看如何做。

    1.7K50

    网络基础知识大全_网络基础知识入门到精通

    :没有任何连接状态 2)如何获得一个IP地址的主机名?...D、FTP命令: 登陆:ftp 对方网址(IP地址) 上传文件:get 文件在本机完整路径 对方文件存放完整路径 下载文件:put 对方文件完整路径 本机存放文件路径 E、COPY命令: 在建立连接后(...6、vcmui.exe 位于C:\Windows\vcmui.exe,在后台自动将被覆盖的驱动程序备份下来,当我们安装的新 驱动出错时可用它进行恢复。...7、winrep.exe 位于C:\Windows\winrep.exe,能自动收集有关系统信息并提示用户输入故障所在,帮我们 编写一篇完整的”求援”报告,并将其发送给有关技术维护人员,简化”求援”操作...这七个Windows自带的小程序可以在开始菜单–运行中直接输入文件名(无需输入扩展名) 调出该程序!

    67720

    原创Paper | 基于快照的 fuzz 工具 wtf 的基础使用

    0x03 demo程序 参考资料 target-hevd 示例能够让我们快速的上手 wtf,现在我们提供个 demo 程序以便完整的学习 wtf 的基本使用,编写 demo 程序如下: #define...「合适」的内存快照位置,因为 wtf 将会以该快照作为起始运行状态,在 wtf_test.exe 中,我们的目标函数是 fuzzme(),所以我们在 fuzzme() 函数入口打下断点,并在 wtf_test.exe...无法正确处理,所以我们应该尽量选择一个「合适」的快照点;对于无法避免的 IO 操作,我们可以采用 patch 的方式修改逻辑,如 demo 程序中的 printf() 函数调用,我们在 Init()...\john\Desktop\workdir\inputs\1.txt 执行如下: 如果不能按预期执行,可以使用 run 命令生成路径覆盖,随后根据执行路径分析问题,下文我们将介绍在 wtf 如何获取路径覆盖...如下: 其 crash 文件如下,顺序寻找到我们埋在 demo 程序中的两个异常错误: 0x07 覆盖率 参考资料 使用 wtf 的 run 子命令还可以生成路径覆盖,配合 IDA 以及 lighthouse

    95461

    让你的 Windows 应用程序在任意路径也能够直接通过文件名执行

    我们可以在任何路径下输入 explorer 来启动资源管理器,可以在任何路径中输入 git 来使用 git 相关的命令。...我们知道可以通过将一个应用程序加入到环境变量中来获得这个效果,但是还有其他的方式吗? 我们将这个过程称之为向 Windows 注册一个应用程序路径。...本文介绍向 Windows 注册一个应用程序路径的各种方法。 ---- Windows 如何查找程序路径?...当我们在任意目录中输入一个命令的时候,Windows 会按照如下顺序寻找这个命令对应的可执行程序: 当前的工作目录 Windows 文件夹(仅此文件夹,不会搜索子文件夹) Windows\System32...现在我们添加一个我们自己开发的程序 walterlv.exe,于是就直接在 App Paths 子键下添加一个 walterlv.exe 的键,并将其默认值设为 walterlv.exe 的完整路径。

    2.1K10

    有趣的10个CMD命令「建议收藏」

    如何关闭?直接点叉就行。 当我们加了个死循环,效果就变了。点叉,关不完的。 这时候,我们可以使用命令taskkill /im python.exe /f,就关掉了。...%I 扩展到一个文件名和扩展名 %~fsI - 仅将 %I 扩展到一个带有短名的完整路径名 %~dp$PATH:I - 搜索列在路径环境变量的目录,并将 %I 扩展 到找到的第一个驱动器号和路径...这个东西我们只介绍/min和/max。我们如何最小化打开程序?start /min cmd.exe & exit运行这行命令后,当前cmd会消失,然后在任务栏中最小化弹出一个新的cmd。...我这里有个文件夹tools,如何切换?cd 相对路径或绝对路径即可。cd tools即可进入该文件夹。 九、创建文件夹的命令md emm,不要想歪了。 创建目录。...如果扩展被停用,则需要键入 mkdir \a\b\c\d。 如何套娃?我们来套一个吧。 文件夹套娃:创建文件夹,并进入文件夹,创建文件夹,并进入文件夹……如此循环。

    6.4K10

    Python如何将py文件打包成exe

    使用pyi-grab_version创建版本信息模板文件,首先找到一个有版本信息的XXX.exe工具,在此目录下打开cmd窗口,输入pyi-grab_version XXX.exe,执行成功后,会在此目录下获得一个...如果不在同一个文件下,写完整路径,[‘aaa.py’, ‘bbb.py’, ‘c:\\user\\ccc.py’] a = Analysis(['pin.py'], pathex...如果用到了非py文件需要打包,那么找到datas列表,将非py文件的路径与文件夹名写在元组里。比如,有图片文件的话,可以放在images文件夹中,程序中调用图片文件时,需要用绝对路径,才能打包成功。...: 第一个参数是Python中的非py类型文件的路径 第二个参数是非py文件保存此资源的文件夹名称,要和路径中的文件夹名称相同。...如果在第2条中选择了pyi-makespec -F main.py ,那么此处只需要执行pyinstaller main.spec即可 6、生成的exe程序在dist文件夹中,dist文件夹里包含了整个项目所需环境

    2.6K20

    10 行代码,用 Python 创建一个 Windows 桌面快捷方式!

    我们可以将此完整路径传递给 activate.bat 文件,它会为我们启动并自动启动并激活工作环境。...完整的命令看起来像这样: cmd.exe /K C:/Users/luobo/AppData/Local/Continuum/miniconda3/Scripts/activate.bat C:/Users...特殊文件夹 从上面的描述看一看到,我们的 miniconda 文件的路径隐藏得很深,并且这个目录还取决于登录用户的个人资料。所以为了我们制作的快捷方式具有通用性,显然是不能进行硬编码的。...我们需要的另一个位置是 cmd.exe,我们可以通过 CSIDL_SYSTEM 获得它。...例如,如果我们想查看开始菜单中现有的快捷方式,我们需要获取 .lnk 文件的完整路径,然后创建一个快捷方式对象并使用 dump 显示值。

    4K30

    python 获取脚本所在目录的正确方法

    以前的方法 如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数。...更特别地,如果你用py2exe模块把Python脚本编译为可执行文件,那么sys.path[0]的输出还会变化: 如果把依赖库用默认的方式打包为zip文件,那么sys.path[0]会输出C:\test...比如C:\test目录下还有一个名为sub的目录;C:\test目录下有getpath.py,sub目录下有 sub_path.py,getpath.py调用sub_path.py;我们在C:\test...如果我们在 sub_path.py里面使用sys.path[0],那么其实得到的是getpath.py所在的目录路径C:\test,因为Python虚拟机是从getpath.py开始执行的。...如果想得到sub_path.py的路径,那么得这样: os.path.split(os.path.realpath(__file__))[0] 其中file虽然是所在.py文件的完整路径,但是这个变量有时候返回相对路径

    9K40

    虹科技术 | 终端入侵防御 | 在重大攻击中发现新的Babuk勒索软件

    >.msi 我们在下面更详细地讨论这个安装程序攻击者使用域控制器的NETLOGON文件夹--存放组策略登录脚本文件的共享文件夹。...·两个加密的文件sc.ocs和config.ocs.bat文件将:·在注册表中设置一个UAC旁路·检查安全解决方案并通过添加新的防火墙规则阻止与它们的通信·执行安装程序,负责将文件解压到C:\Users...最终的有效载荷2、执行下一个阶段第一个任务是在一个新的线程中完成的,如以下片段所示:该恶意软件从微软应用程序执行期间交付的命令行参数中读取.OCS文件路径,并对内容进行解密。...下面的截图显示了某些代码块在源码和反编译中的匹配情况。注意:编译器在某些情况下会发挥它的魔力,这可能导致不同的代码定位和代码减少。修改我们注意到影子拷贝的删除程序与源代码中的不同。...下面的代码片段显示了恶意软件如何执行WMI查询以获得每个影子副本的ID,然后使用COM,按ID删除每个影子副本。值得注意的是,BlackMatter和Conti勒索软件等恶意软件也表现出类似的行为。

    43720

    通过 NT 符号链接重定向杀死 Defender,同时保持其不受打扰

    ,从中加载 Defender 的 WdFilter 驱动程序二进制文件.这也可以用来使 Defender 加载任意驱动程序,没有工具可以成功定位,但它无法在重新启动后继续存在。...Win32 路径、NT 路径和 NT 符号链接 在 Windows 中加载驱动程序时,有两种方法可以指定驱动程序二进制文件在文件系统上的位置:Win32 路径和 NT 路径。...对这两种路径之间细微差别的完整分析超出了本文的范围,但James Forshaw 已经很好地解释了它。本质上,Win32 路径是更完整的 NT 路径的简化版本,并且严重依赖于 NT 符号链接。...让我们看一个例子: Win32路径 新台币路径 C:\Temp\test.txt \Device\HarddiskVolume4\Temp\test.txt 当explorer.exe用于导航文件系统中的文件夹时...这些自定义 RAII 类型在raii.h标头中定义并在其各自的.cpp文件中实现。 获取系统 首先,我们将代币提升为系统代币。这可以通过在文件GetSystem中实现的函数轻松完成。

    1.2K80

    windows提权看这一篇就够了

    原理:对于C:Program FilesSome FolderService.exe文件路径中的每一个空格,windows都会尝试寻找并执行名字与空格前的名字向匹配的程序。...操作系统会对文件路径中空格的所有可能进行尝试,直到找到一个匹配的程序。...\Some Folder\Service.exe 所以如果我们能够上传一个适当命名的恶意可执行程序在受影响的目录,比如这里我把木马名字改了Program.exe,放在c盘小,一旦此服务重启,因为优先级的缘故...,服务会优先选择我们木马Program.exe,而不是C:Program FilesSome FolderService.exe,那么我们的恶意程序就会以system权限运行(大多数情况下)。...,所以如果我们有权限替换原有的mof文件,就能获得system权限 利用条件 Windows<=2003(虽然很久远了,还是温习一下) mysql在c:windows/system32

    3.4K20

    windows提权看这一篇就够了

    原理:对于C:\Program Files\Some Folder\Service.exe文件路径中的每一个空格,windows都会尝试寻找并执行名字与空格前的名字向匹配的程序。...操作系统会对文件路径中空格的所有可能进行尝试,直到找到一个匹配的程序。...\Service.exe 所以如果我们能够上传一个适当命名的恶意可执行程序在受影响的目录,比如这里我把木马名字改了Program.exe,放在c盘小,一旦此服务重启,因为优先级的缘故,服务会优先选择我们木马...Program.exe,而不是C:\Program Files\Some Folder\Service.exe,那么我们的恶意程序就会以system权限运行(大多数情况下)。...,所以如果我们有权限替换原有的mof文件,就能获得system权限 利用条件 Windows<=2003(虽然很久远了,还是温习一下) mysql在c:windows/system32/mof目录有写权限

    16.9K31
    领券