Board index » cppbuilder » LogonUser + SHBrowseForFolder Problem
as_megas
![]() CBuilder Developer |
LogonUser + SHBrowseForFolder Problem2006-05-23 05:24:05 PM cppbuilder61 Hi, I've got a function that tries to select a directory under a network shared folder. Here is what I did : bool __fastcall BrowseForFolder(WideString Title, WideString &Path) { BROWSEINFO BrowsingInfo; wchar_t DirPath[MAX_PATH]; LPITEMIDLIST ItemID; memset(&BrowsingInfo, 0, sizeof(BROWSEINFO)); memset(DirPath, 0, MAX_PATH); BrowsingInfo.hwndOwner = GetActiveWindow(); BrowsingInfo.lpszTitle = Title.c_bstr(); BrowsingInfo.ulFlags |= BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS | BIF_SHAREABLE | BIF_USENEWUI | BIF_BROWSEINCLUDEFILES | BIF_BROWSEINCLUDEURLS ; if(Path != NULL) { // namespace root for parsing the path LPSHELLFOLDER psfDesktop = NULL; SHGetDesktopFolder(&psfDesktop); // parse path for absolute PIDL, and connect to target folder LPITEMIDLIST pidl = NULL; // general purpose psfDesktop->ParseDisplayName(NULL, NULL, Path.c_bstr(), NULL, &pidl, NULL); BrowsingInfo.pidlRoot = pidl; } CoInitialize(NULL); ItemID = SHBrowseForFolder(&BrowsingInfo); if(ItemID) { SHGetPathFromIDList(ItemID, DirPath); Path=WideString(DirPath); } GlobalFreePtr(ItemID); return 0!=ItemID; } void main(void) { WideString Directory; HANDLE token; if(LogonUser(EditLogin->Text.c_bstr(), L"\\\\192.168.0.2", EditPassword->Text.c_bstr(), LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT, &token)) { if(ImpersonateLoggedOnUser(token)) { Directory = "\\\\192.168.0.2\\directory1\\subdirectory"; if(BrowseForFolder(WideString("Please select the directory"), Directory)) EditServerPath->Text = Directory; RevertToSelf(); } CloseHandle(token); } else MessageDlg("Impossible to connect to Server !", mtWarning, TMsgDlgButtons() << mbOK, 0); } My problem is that it succeeds to show the directory \\\\192.168.0.2\\directory1\\subdirectory, but I can't see anything under it (neither subdirectories, nor files). What am I doing wrong ? Further more, if I log onto the server with an explorer, and than I try to launch my code, It succeeds in listing all the subdirectories and files under de path ! Has anyone encountered such problems ? Thanks a lot for your attention. |