以下代码片段在Windows 8下工作,但在Windows下不起作用:
function listDrives()
{
/* Drive type:
0 Unknown
1 No Root Directory
2 Removable Disk
3 Local Disk
4 Network Drive
5 Compact Disc
6 RAM Disk
*/
try {
var wmi = GetObject("winmgmts:{impersonationLevel=impersonate}");
for(var e = new Enumerator(wmi.InstancesOf("Win32_LogicalDisk")); !e.atEnd(); e.moveNext()) {
var s = e.item();
WScript.Echo(s.Name + " ; " + s.DriveType + " ; " + s.VolumeName);
}
}
catch (err) {
WScript.Echo(err.message);
}
}在Win8下,列出了所有驱动器。在XP下,没有输出或错误。有人知道为什么吗?谢谢。
编辑:与我一起测试的WinXP用户是Adminsitrator组的一部分。
发布于 2014-01-24 20:44:20
FYI,这是一个权限问题,我无法解决。所以,我想出了一个来自here的WSH解决方案
var objFSO = new ActiveXObject("Scripting.FileSystemObject");
for(var e = new Enumerator(objFSO.Drives); !e.atEnd(); e.moveNext()) {
var objDrive = e.item();
WScript.Echo("Available space: " + objDrive.AvailableSpace);
WScript.Echo("Drive letter: " + objDrive.DriveLetter);
WScript.Echo("Drive type: " + objDrive.DriveType);
WScript.Echo("File system: " + objDrive.FileSystem);
WScript.Echo("Free space: " + objDrive.FreeSpace);
WScript.Echo("Is ready: " + objDrive.IsReady);
WScript.Echo("Path: " + objDrive.Path);
WScript.Echo("Root folder: " + objDrive.RootFolder);
WScript.Echo("Serial number: " + objDrive.SerialNumber);
WScript.Echo("Share name: " + objDrive.ShareName);
WScript.Echo("Total size: " + objDrive.TotalSize);
WScript.Echo("Volume name: " + objDrive.VolumeName);
}https://stackoverflow.com/questions/21339036
复制相似问题