首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WSH获取驱动器名称

WSH获取驱动器名称
EN

Stack Overflow用户
提问于 2014-01-24 17:44:13
回答 1查看 1.3K关注 0票数 0

以下代码片段在Windows 8下工作,但在Windows下不起作用:

代码语言:javascript
复制
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组的一部分。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-24 20:44:20

FYI,这是一个权限问题,我无法解决。所以,我想出了一个来自here的WSH解决方案

代码语言:javascript
复制
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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21339036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档