Visual c++ 如何捕获安装路径?

Visual c++ 如何捕获安装路径?,visual-c++,Visual C++,如何捕获用户选择的安装路径 我知道我可以从%PROGRAMFILES%获取“Program Files”路径,但如何获取用户选择的安装路径?可以使用GetCurrentPath(CurrentPath)来完成 //代码是Borland的,我刚修改过 /使其成为标准C++ #包含//用于getcwd #包含//用于最大路径 #包括//用于cout和cin 使用名称空间std; //函数返回当前工作目录 //这通常是应用程序路径 无效GetCurrentPath(字符*缓冲区) { getcwd(缓

如何捕获用户选择的安装路径


我知道我可以从%PROGRAMFILES%获取“Program Files”路径,但如何获取用户选择的安装路径?

可以使用
GetCurrentPath(CurrentPath)来完成

//代码是Borland的,我刚修改过
/使其成为标准C++
#包含//用于getcwd
#包含//用于最大路径
#包括//用于cout和cin
使用名称空间std;
//函数返回当前工作目录
//这通常是应用程序路径
无效GetCurrentPath(字符*缓冲区)
{
getcwd(缓冲区,最大路径);
}
int main()
{
//_MAX_PATH是路径允许的最大长度
字符当前路径[_MAX_PATH];
//使用函数获取路径
GetCurrentPath(CurrentPath);
//仅出于演示目的显示路径
字符温度[_MAX_PATH];

cout可以使用
GetCurrentPath(CurrentPath);

//代码是Borland的,我刚修改过
/使其成为标准C++
#包含//用于getcwd
#包含//用于最大路径
#包括//用于cout和cin
使用名称空间std;
//函数返回当前工作目录
//这通常是应用程序路径
无效GetCurrentPath(字符*缓冲区)
{
getcwd(缓冲区,最大路径);
}
int main()
{
//_MAX_PATH是路径允许的最大长度
字符当前路径[_MAX_PATH];
//使用函数获取路径
GetCurrentPath(CurrentPath);
//仅出于演示目的显示路径
字符温度[_MAX_PATH];


cout我认为可以修改安装程序,将其写入注册表项供以后参考。

我认为可以修改安装程序,将其写入注册表项供以后参考。

你所说的安装路径是什么意思,你是指可执行文件所在的路径吗?我所说的安装路径是指ser在安装GUI期间选择。由于我的程序已硬编码为“c:\\programfiles”,如果用户在不同路径安装我的程序,它将无法运行。因此我需要在我的程序中动态设置我的参考路径:)请澄清正在安装的应用程序以及需要知道安装位置的应用程序。或者您正在谈论同一app?我有一个dll和一个exe。dll是使用regsvr32注册的。dll需要调用exe才能工作。因此,我需要在我的dll中对exe位置的路径进行编程。安装路径是什么意思,是指可执行文件所在的路径吗?安装路径是指用户在他安装了GUI。因为,我的程序被硬编码为“c:\\programfiles”,如果用户在不同的路径安装我的程序,它将无法运行。因此我需要在我的程序中动态设置我的引用路径:)请澄清正在安装的应用程序以及需要知道安装位置的应用程序。或者你说的是同一个应用程序?我有一个dll和一个exe。dll是使用regsvr32注册的。dll需要调用exe才能工作。因此,我需要在dll中编程exe位置的路径。这是否意味着我可以简单地替换“c:\\Programfiles”部分使用getcwd的返回值?它可以工作。但不能准确检测已安装文件的路径。这是否意味着我可以简单地替换“c:\\Programfiles”部分使用getcwd的返回值?它可以工作。但不能准确检测已安装文件的路径。知道如何修改visual studio安装程序来执行此操作吗?@karikari,不,这是Microsoft的属性,不是开源的!我的意思是修改应用程序的安装程序,以后要为其他程序检索其安装路径(需要它的人)。我的回答假设你正试图这么做(即,应用程序A需要知道应用程序B安装在哪里)是的,山姆。实际上,我构建了一个使用外部exe的DLL。我的问题是,我无法跟踪用户选择的安装路径。目前,我在DLL中硬编码了exe的路径。当用户将exe安装到其他文件夹时,我的DLL找不到它:(好吧,如果你知道exe的名称,你可以搜索它。否则,就像我建议的那样,修改exe的安装程序,将安装路径写入注册表项。然后,你的dll可以通过读取注册表项始终知道exe的位置。你甚至可以进一步修改exe的代码,以便每次更新注册表项(行政长官)执行。这样,如果移动exe,它将自动更新注册表项。如果您无法修改exe或其安装程序,我认为按文件名搜索是您唯一的选择。知道如何修改visual studio安装程序来执行此操作吗?@karikari,不,这是Microsoft的属性,不是开源的!我的意思是修改应用程序的安装程序您希望稍后为另一个程序(需要它的程序)检索其安装路径。我的回答假设您正试图这样做(即,应用程序A需要知道应用程序B的安装位置)是的,山姆。实际上,我构建了一个使用外部exe的DLL。我的问题是,我无法跟踪用户选择的安装路径。目前,我在DLL中硬编码了exe的路径。当用户将exe安装到其他文件夹时,我的DLL找不到它:(好吧,如果你知道exe的名称,你可以搜索它。否则,就像我建议的那样,修改exe的安装程序,将安装路径写入注册表项。然后,你的dll可以通过读取注册表项始终知道exe的位置。你甚至可以进一步修改exe的代码,以便每次更新注册表项(exe)已执行。这样,如果移动exe,它将自动更新注册表项。如果您无法修改exe或其安装程序,我认为按文件名搜索是您唯一的选择。
// The Code is Borland's, I just modified it
// to make it Standard C++

#include <direct.h>        // for getcwd
#include <stdlib.h>        // for MAX_PATH
#include <iostream>        // for cout and cin

using namespace std;

// function to return the current working directory
// this is generally the application path
void GetCurrentPath(char* buffer)
{
getcwd(buffer, _MAX_PATH);
}

int main()
{

// _MAX_PATH is the maximum length allowed for a path
char CurrentPath[_MAX_PATH];
// use the function to get the path
GetCurrentPath(CurrentPath);

// display the path for demo purposes only
char temp[_MAX_PATH];
cout << CurrentPath << endl;
cout << "Press Enter to continue";
cin.getline(temp,_MAX_PATH);
return 0;
}