[英]GetVolumeInformation for network drives when admin returns 0
我正在使用此代碼來檢索卷序列號
[DllImport("Kernel32.dll", SetLastError = true)]
extern static bool GetVolumeInformation(string vol, StringBuilder name, int nameSize, out uint serialNum, out uint maxNameLen, out uint flags, StringBuilder fileSysName, int fileSysNameSize);
public static uint GetVolumeSerial(string strDriveLetter)
{
uint serialNum, maxNameLen, flags;
bool ok = GetVolumeInformation(strDriveLetter, null, 0, out serialNum,out maxNameLen, out flags, null, 0);
return serialNum;
}
它工作得很好,除非當我以管理員身份通過應用程序清單UAC高程運行時,它始終為映射的網絡驅動器返回0(但它可以正常工作)
也許管理員用戶由於某種原因看不到映射的驅動器(您會以相反的方式)。 有什么辦法解決這個問題,或者只是以登錄用戶的身份調用該代碼?
我在64位Windows 7上,但以x86模式運行該應用程序
映射的網絡驅動器為一個用戶映射。 當您以其他用戶身份連接時,就該其他用戶而言,該驅動器不存在。
如果您需要多個用戶訪問同一網絡路徑,請使用實際的UNC路徑(“ \\\\server\\path
”)。 映射的網絡驅動器僅為人類帶來了便利。
如果確實需要多個用戶訪問映射的網絡驅動器,則需要分別為每個用戶映射它。 例如,您可以在運行於每個用戶登錄並調用net use
的批處理文件中執行此操作(不過,我不太確定它是否會對諸如SYSTEM這樣的用戶有所幫助)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.