带有UNC路径的.Net DriveInfo()?

时间:2009-03-24 09:56:35

标签: .net unc driveinfo

早上好,

有没有办法获取UNC路径的DriveInfo实例(例如“\ fors343a.ww123.somedomain.net \ folder \ 1 \”),因为例如......

var driveInfo = new System.IO.DriveInfo(drive);

...在上面使用该UNC路径时抛出ArgumentException(“对象必须是根目录(\”C:\\“)或驱动器号(\”C \“)。”)。

我将使用什么来检索有关该信息的信息,例如如何检查给定文件夹是否位于本地驱动器或unc路径上?

2 个答案:

答案 0 :(得分:3)

DriveInfo构造函数的“备注”部分说:

  

驱动器名称必须是a   'a'中的大写或小写字母   到'z'。你不能使用这种方法   获取有关驱动器名称的信息   是nullNothingnullptra null引用   (在Visual Basic中没有任何内容)或使用UNC   (\ server \ share)路径。

我能够通过在Windows资源管理器中映射网络驱动器来使其工作。也就是说,我将“\ server \ share”映射到Z,然后DriveInfo("Z:\\");给了我预期的结果。

不幸的是,没有简单的方法从C#映射网络驱动器。您要么必须执行外部命令(即“net use z:\ server \ share”),要么调用Windows WNetAddConnection2 API函数来执行此操作。无论你走到哪里,你都需要在完成后删除驱动器映射。

答案 1 :(得分:0)

在Windows上,以下内容在C#中运行良好(至少要获得最常用的大小):

    $('#workspace-content').delegate('form#article', 'submit', function(){
    var that = $('form#article'),
        url = that.attr('action'),
        type = that.attr('method'),
        data = {};

        data = that.serialize();

        $.ajax({
            type: type,
            url : url,
            data : data,
            dataType: 'json',

            success: function(data){
                $('#header-search-field').append(data.msg).delay(3000).fadeOut(500, function(){
                    var that = $(this);
                    that.html('').fadeIn();
                });
            }
        });

    return false;
});

以下是一些示例代码(实际上并没有以这种形式编译,而是分散在多个文件中的工作代码中的点点滴滴):

<button id="save-article" type="submit" name="save" class="btn btn-info btn-xs pull-left">
    <span class="glyphicon glyphicon-floppy-save"></span>
</button>
<input name="title" type="text" value="<?php echo $work->title;?>" class="form-control" id="title" placeholder="" />
<textarea row="10" name="article" class="form-control" id="article" placeholder=""><?php echo $work->article;?></textarea>
<button id="submit-article" type="submit" name="submit" class="btn btn-info btn-block">Send</button>
<input name="slug" type="hidden" value="<?php echo $work->slug;?>" />

不要试图在Linux或Mac上使用它 - 它必须为那些重写(我有兴趣看到它)。