如何获取EXE可执行文件的所在路径

如何获取EXE可执行文件的所在路径,第1张

----------------------代码段开始------------------------------ CString strText;TCHAR exepath[MAX_PATH]={0};::GetModuleFileName(NULL,exepath,MAX_PATH);strText=exepath;strText=strTextLeft(strTextReverseFind(''''));strText += _T("");

----------------------代码段结束-------------------------------

GetModuleFileName是一个API函数,通过这个函数,可以获得运行的当前程序的EXE文件所在路径。直接将这几句代码,在MFC中封装成一个函数即可。GetModuleFileName第一个参数是示例句柄,设为NULL则表示当前执行的EXE的。第二个参数就是接受得到的可执行路径的字符串缓冲。第三个是缓冲的大小。大小就是声明的缓冲的大小,以TCHAR为单位。strTextLeft()是CString提供的字符串截取函数,具体的可以查看MSDN或者本站其他相关文章。ReverseFind()是CString提供的字符串查找函数,具体的可以查看MSDN或者本站其他相关文章。本文就是给大家提供一个方面,仅此而已。

使用 ApplicationStartupPath

至于

SystemIODirectoryGetCurrentDirectory不行,因为应用程序有个当前工作目录,这个工作目录是会变的,不总是程序的启动目录(当然默认启动是应用程序目录)。

比如说,你打开命令行(cmd),它就会显示一个路径,你会发现这个路径(通常是 C:\Documents and settings\用户名,在XP下)不是cmdexe所在目录(cmdexe 是在system32下的)。

而这个当前目录很容易改变,甚至当你使用了文件浏览对话框(比如打开文件、保存文件)时,这个当前目录都会改变到它最后选择的目录。

而快捷方式中的启动目录,就是设置当前应用程序的工作目录。默认情况下,新建的快捷方式的启动目录就是应用程序所在目录,所以你不修改的话是可以正常工作的,明白了?

1 在工作列上按鼠标右键,选"启动任务管理器"

2 先选进程页签,再到要查看路径的进程上按鼠标右键,选"属性"

3 见下图红框标示处,即为该进程的路径

Option Explicit

Private Sub Command1_Click()

MsgBox ExePath("vb6exe")

End Sub

Public Function ExePath(ExeNm As String) As String

Dim objWMIService, colProcesslist, objProcess

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\\root\cimv2")

Set colProcesslist = objWMIServiceExecQuery("Select  from Win32_Process Where Name = '" & ExeNm & "'")

If colProcesslistCount > 0 Then

For Each objProcess In colProcesslist

ExePath = ExePath & objProcessExecutablePath & vbCrLf

Next

End If

Set objWMIService = Nothing

Set colProcesslist = Nothing

End Function

看看你的计算机上有没有 Windows XP 的 wmic 命令。

在DOS 黑窗 打命令

wmic process

可以获得所有进程信息。

编程序,用 system("wmic process > my_logtxt");

把 屏幕输出 转向 到 文件 my_logtxt 里。

然后 fopen my_logtxt ,从里面 抓出 你要的 进程。

如果觉得信息太多,查一下帮助文件,找合适的选项命令,wmic process 加上选项 就可以了。

例如:

system("wmic process get ExecutablePath > my_logtxt");

my_logtxt 里有:

C:\WINDOWS\System32\smssexe

C:\WINDOWS\system32\csrssexe

C:\WINDOWS\system32\winlogonexe

C:\WINDOWS\system32\servicesexe

C:\WINDOWS\system32\lsassexe

C:\WINDOWS\system32\svchostexe

。。。

获取当前目录绝对路径:set current_path="%cd%" 比如要运行子目录的dir1\testcmd就直接加入下面一行%current_path%\dir1\testcmd

以上就是关于如何获取EXE可执行文件的所在路径全部的内容,包括:如何获取EXE可执行文件的所在路径、如何获取应用程序的绝对路径、OS X中如何获取当前运行程序的路径 / 蓝讯等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9529556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存