本人写了一个遍历本机磁盘文件目录的一个程序,碰到一个这样的问题,我把它在C盘下运行,它就从C盘根目录下开始,我把它放在D盘运行,它就从D盘开始,...。我想从整个系统的根目录开始,即不管我把该程序放到哪个盘下,它最开始的目录都是C盘,D盘,...。哪位大侠有相关经验的说说我的程序大概是哪里有误?
    程序关键代码如下:
BOOL CDlgPath::OnInitDialog() 
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here CWinApp* pApp = AfxGetApp();
HTREEITEM hItemRoot;
HIMAGELIST hImlSys;
SHFILEINFO ssfi;
CWaitCursor wait;
TCHAR szRoot[] = _T("\\");

//设置图标
hImlSys = (HIMAGELIST)SHGetFileInfo(_T("dummy.txt"), 0, &ssfi,
sizeof(SHFILEINFO), 
SHGFI_USEFILEATTRIBUTES | SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
m_imlSystem.Attach(hImlSys);
m_treeCtrl.SetImageList(&m_imlSystem, TVSIL_NORMAL);
m_imlSystem.Detach();

hItemRoot = TVI_ROOT;//m_treeFolder.InsertItem(GetSystemName(), 0, 1);
if(hItemRoot)  //创建了根节点
{
TVINSERTSTRUCT tvi;  
int iIcon = GetIconIndex(szRoot);

tvi.hParent = TVI_ROOT;  //the item is inserted at the root of the tree-view control
tvi.hInsertAfter = TVI_LAST;  //Inserts the item at the end of the list
tvi.item.mask = TVIF_CHILDREN | TVIF_IMAGE | TVIF_SELECTEDIMAGE |
TVIF_TEXT | TVIF_PARAM;
tvi.item.pszText = szRoot;
tvi.item.iImage = iIcon;
tvi.item.iSelectedImage = iIcon;
tvi.item.cChildren = I_CHILDRENCALLBACK;
tvi.item.lParam = -1;

m_treeCtrl.InsertItem(&tvi);
}
 
// 除非将焦点设置到控件,否则返回 TRUE
return TRUE;  // return TRUE unless you set the focus to a control
              // EXCEPTION: OCX Property Pages should return FALSE
}void CDlgPath::OnItemexpandingTreePath(NMHDR* pNMHDR, LRESULT* pResult) 
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
if(pNMTreeView->action & TVE_EXPAND)
{
TVITEM item;

item.mask = TVIF_HANDLE | TVIF_PARAM;
item.hItem = pNMTreeView->itemNew.hItem;

if(pNMTreeView->itemNew.lParam == -1)
{
CString strFullPath = GetFullPath(item.hItem);  //获取路径
RECT rc;

if(EnumDirs(strFullPath, _T("*"), item.hItem))  //非0成功
item.lParam    = 1;
else
item.lParam    = 0;
m_treeCtrl.SetItem(&item);

m_treeCtrl.GetItemRect(item.hItem, &rc, FALSE);
m_treeCtrl.InvalidateRect(&rc);
m_treeCtrl.UpdateWindow();
}
}

*pResult = 0;
}CString CDlgPath::GetFullPath(HTREEITEM hItem)
{
CString strFullPath,
strFolder,
strSep(_T("\\"));

if(hItem)
{
while(hItem)
{
strFolder = m_treeCtrl.GetItemText(hItem);

if(strFolder != strSep)
strFullPath = strFolder + strSep + strFullPath;

hItem = m_treeCtrl.GetParentItem(hItem);
}
strFullPath = strSep + strFullPath;
}

return strFullPath;
}int CDlgPath::EnumDirs(LPCTSTR pszPath, LPCTSTR pszFilter, HTREEITEM hItemParent)
{
WIN32_FIND_DATA fd;
HANDLE hFind;
BOOL bFind;
HTREEITEM hItem = TVI_LAST;
CString strSearch(pszPath),strBase(pszPath);
int nCount = 0;  //列举个数

ZeroMemory(&fd,sizeof(WIN32_FIND_DATA));

strSearch += pszFilter;

bFind=((hFind = FindFirstFile(strSearch, &fd)) != INVALID_HANDLE_VALUE);  //fd.dwFileAttributes==1为文件夹,否则为文件

while (bFind)
{
if((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
!(fd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN))
{
TVINSERTSTRUCT tvi;
CString strSub(strBase);
int iIcon;

strSub += fd.cFileName;
/*M_editPath=strSub;*/
/* m_editCtr.SetDlgItemText(IDC_EDIT_PATH,M_editPath);*/

/*PathToPrint=strSub;*/
iIcon = GetIconIndex(strSub);  //找到图标

tvi.hParent = hItemParent;
tvi.hInsertAfter = TVI_LAST;
tvi.item.mask = TVIF_CHILDREN | TVIF_IMAGE | TVIF_SELECTEDIMAGE |
TVIF_TEXT | TVIF_PARAM;
tvi.item.pszText = fd.cFileName;
tvi.item.iImage = iIcon;
tvi.item.iSelectedImage = iIcon;
tvi.item.cChildren = I_CHILDRENCALLBACK;
tvi.item.lParam = -1;

hItem = m_treeCtrl.InsertItem(&tvi);  //插入树节点

++nCount;
}
bFind=FindNextFile(hFind, &fd);
}
return nCount;
}int CDlgPath::GetIconIndex(LPCTSTR pszFileName)  //获取文件夹图标
{
SHFILEINFO ssfi;

SHGetFileInfo(pszFileName, 0, &ssfi, sizeof(SHFILEINFO),
SHGFI_SYSICONINDEX | SHGFI_SMALLICON);

return ssfi.iIcon;
}