我在C++/WinAPI中构建的可执行文件将检查放置在同一文件夹中的文件,我会使用PathFileExists
它。当我在普通计算机上运行它时,它会找到该文件,但是当我在RemoteApp上发布可执行文件并从Web 访问运行它时,找不到该文件。我会错过什么?
// This is the file I want to find (located in the same directory as the EXE)
wstring myfile = L"myfile.conf";
BOOL abspath = FALSE;
// Trying to get the absolute path first
DWORD nBufferLength = MAX_PATH;
wchar_t szCurrentDirectory[MAX_PATH + 1];
if (GetCurrentDirectory(nBufferLength, szCurrentDirectory) == 0) {
szCurrentDirectory[MAX_PATH + 1] = '\0';
} else {
abspath = true;
}
if (abspath) {
// Create the absolute path to the file
myfile = L'\\' + myfile;
myfile = szCurrentDirectory + myfile ;
MessageBox(hWnd, ConvertToUNC(myfile).c_str(), L"Absolute Path", MB_ICONINFORMATION);
} else {
// Get the UNC path
myfile = ConvertToUNC(myfile);
MessageBox(hWnd, myfile.c_str(), L"UNC Path", MB_ICONINFORMATION);
}
// Try to find file
int retval = PathFileExists(myfile.c_str());
if (retval == 1) {
// Do something
} else {
// File not found
}
该ConvertToUNC
函数是从这里复制的。我看到的是,虽然可执行文件位于其他地方,但绝对路径被认为是C:\Windows
. 我真的不知道是什么原因造成的。服务器是 Windows 2012 R2,就像我说的,应用程序通过 RemoteApp Web Access 运行。返回的 UNC 路径只是文件的名称(没有卷或文件夹)