我正在使用此代码检索卷序列
[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模式下运行应用程序
答案 0 :(得分:0)
为一个用户映射映射的网络驱动器。当您作为其他用户进行连接时,就其他用户而言,该驱动器不存在。
如果您需要多个用户访问同一网络路径,请使用实际的UNC路径(“\\server\path
”)。映射的网络驱动器只是人类的便利。
如果您确实需要多个用户来访问映射的网络驱动器,则需要分别为每个用户映射它。例如,你可以在一个批处理文件中执行此操作,该文件在每个用户的登录时运行并调用net use
(我不太确定它会对像SYSTEM这样的用户有帮助。)