如何得到当前用户的 ‘程序’文件夹的路径

如何得到当前用户的 ‘程序’文件夹的路径,第1张

vc获取当前程序文件的路径方法

1方法1

char pBuf[MAX_PATH]; //存放路径的变量

GetCurrentDirectory(MAX_PATH,pBuf); //获取程序的当前目录

strcat(pBuf,"\\");

strcat(pBuf,AfxGetApp()->m_pszExeName);

strcat(pBuf,"exe"); //获取程序的全文件名

2方法2

//函数返回应用程序所在的路径

CString CClientApp::ReturnPath()

{

CString sPath;

GetModuleFileName(NULL,sPathGetBufferSetLength(MAX_PATH+1),MAX_PATH);

sPathReleaseBuffer ();

int nPos;

nPos=sPathReverseFind('\\');

sPath=sPathLeft(nPos);

return sPath;

}

3对比及建议

方法1获取的是程序的工作路径,如某个程序安装在C,D盘或者其它任何,当你从[开始]-[程序]后的菜单中打开该文件,此时获取的是用户工作路径,如:C:\Documents and Settings\[计算机当前用户名]\\

如果你想通过这个路径来加载你放在程序目录下的文件,必定出错。通常这种情况在你编译调试程序时是不会出错的,你跟踪得到的绝对路径,但打包安装后一定出问题。

方法2获取的是程序的绝对路径,用这个路径加载同目录下的文件是不会有问题的。

如果你要确保成功加载文件,建议使用方法2!!!!!!

用GetModuleFileName这个函数就可以做到了,完整代码如下,自己编译运行下就知道了

#include <stdioh>

#include <windowsh>

int main()

{

char ExeFile[200];

//得到当前文件路径名

GetModuleFileName(NULL,ExeFile,200);

printf("当前文件路径为:\n");

printf("%s\n",ExeFile);

return 0;

}

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

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

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

很简单:

API函数:

GetModuleFileName(模块句柄,保存的字符数组,字符数组的大小);

一般来说,要获取正在运行程序的全路径,那就在第一个参数写个0

参数2是保存的数组,获取的路径将保存在这个数组

参数三是字符数组的大小

给你一个示例程序:

#include <windowsh>

#include <stdioh>

void main()

{

char ExePlace[1024];/保存地址的数组/

GetModuleFileName(0,ExePlace,1024);/获取当前运行全路径/

puts(ExePlace);/输出获取到的路径/

}

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

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

使用 ApplicationStartupPath

至于

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

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

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

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

以上就是关于如何得到当前用户的 ‘程序’文件夹的路径全部的内容,包括:如何得到当前用户的 ‘程序’文件夹的路径、如何用c++获取当前程序自身的完整路径、如何获取执行程序的当前路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/9294418.html

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

发表评论

登录后才能评论

评论列表(0条)

保存