問題描述:
一般應用程式可以獲取到映射盤,而當開啟服務程式后就訪問不到了。網上看到了一些解答都是權限問題,不過我試了所有的權限,結果還是一樣獲取不到,是不是還要添加什么代碼?結果可以看保存的盤符,代碼在一般程式沒問題。
原始碼:
system("net use P: \\\\192.168.1.14\\system"); //創建網路映射盤
vector<string> lstDrivers;
char szBuf[256] = {0};
GetLogicalDriveStringsA(256, szBuf);
char* pBuf = szBuf;
for(;*pBuf != '\0'; pBuf += strlen(pBuf) + 1)
{
UINT dwType = GetDriveTypeA(pBuf);
if(DRIVE_FIXED == dwType || DRIVE_REMOTE == dwType)
{
char szTmp2[30] = {0};
memcpy(szTmp2, pBuf, strlen(pBuf) - 1);
lstDrivers.push_back(string(szTmp2)); //將本地磁盤與映射盤保存
}
}
uj5u.com熱心網友回復:
CSDN沒有一個高人么?uj5u.com熱心網友回復:
是不是發的論壇不對呢?uj5u.com熱心網友回復:
將服務登錄用戶設定為和當前登錄用戶一樣。uj5u.com熱心網友回復:
沒有弄過這個,不過說一下自己的想法:1 windbg 除錯,然后配合idapro 看net.exe 的原始碼。這樣時間可能比較多,但可以跟到根上。
2 看看net.exe 的回傳值,可能知道為何不行。
3 看net.exe 中使用的函式其中使用了 WNetEnumResource系列的函式,那么可能這些函式上出了問題,在這些函式上下斷點,然后看看回傳值。
uj5u.com熱心網友回復:
將服務登錄用戶設定為和當前登錄用戶一樣。==》這個是最先的考慮方式(全部設為Administrator管理員權限,其他所有權限都試過),結果是不可以的,這種方式已經被否決。當然總體感徑訓是這個問題,只是用的是WIN7系統,2003的也不可以,真正的原因還未知。net use 是DOS的指令,換用WNetAddConnection2操作也試過,回傳值的結果也沒有什么問題,可以看到映射成功,但是看不到映射盤(這個才是根本),因為在不開啟服務的時候,映射成功是可以看到映射盤的(如電腦上映射K盤,就可以看到K盤)。
不過謝謝你們的答復,期待有高人給更多的啟示~~~~
uj5u.com熱心網友回復:
你的問題是不是這樣?使用system 運行 net use ,如果包裝的程式是應用程式就可以,如果是服務則不可以?
如果是這樣的話,極有可能是在為服務程式沒有權限去訪問,而應用程式則可以,那么我們用行程間通訊即可解決。
uj5u.com熱心網友回復:
樓主解決了嗎?最近也遇到一樣的問題,試了很多方法都沒有搞好,解決了@一下uj5u.com熱心網友回復:
我也遇到了這個問題。管理員運行程式或者服務程式,都找不到網路映射盤。
uj5u.com熱心網友回復:
沒準是被某個組策略設定給屏蔽了。uj5u.com熱心網友回復:
參考這個帖子,問題解決http://www.cnblogs.com/han1988/p/3480531.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/115497.html
標籤:硬件/系統
下一篇:openni_grabber.exe 中的 0x75ea812f 處有未經處理的例外: Microsoft C++ 例外: 記憶體位置 0x0012f348 處的
