4469


Win7Pro＋Visual Studio Community 2013で以下のようなcodeを書いたところD
driveに対する処理で例外が発生して取得できません。解決のためにご助力ください。

* * *

Cは通常のHDD、DはCの任意のpathをsubstで仮想driveとしたものです。

`subst d: c:\tmp\d`

[code]

    static void Main(string[] args)
    {
        string drvC = "c:\\";
        string drvD = "d:\\";
        var foldersC = Directory.GetDirectories(drvC);
        var foldersD = Directory.GetDirectories(drvD); // DirectoryNotFoundException発生
    }
[/code]

上記のようなC#のcodeを実行すると、D driveに対しての処理を行うところで例外が発生してしまいます。  
同じことを、Win7Pro＋Visual Studio Pro 2013環境で実行してみたところ例外が発生しませんでした。  
おそらくCommunityに依存していると思うのですが、Proで実現できていることからどうにか対処できないかと悩んでおります。  
正直、どうアプローチして良いかも分からず、半分途方に暮れています。何かご存知の方が居られましたら、教えていただけるとありがたいです。

[code]

    場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
    場所 System.IO.FileSystemEnumerableIterator`1.CommonInit()
    場所 System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
    場所 System.IO.Directory.GetDirectories(String path)
    場所 ConsoleApplication1.Program.Main(String[] args)
    場所 System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    場所 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    場所 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    場所 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    場所 System.Threading.ThreadHelper.ThreadStart()
    
[/code]

![DirectoryNotFoundException発生dialog](https://i.stack.imgur.com/oB4aV.png)


CC BY-SA 3.0
2015-01-13T02:09:06.023
4465
2015-01-17T16:30:05.227
2383
question
c# windows visual-studio
substで作ったdriveに対してDirectory.GetDirectoriesすると例外が発生する


Visual StudioをAdministratorに昇格して実行していませんか?(タイトルバーに (Administrator) とついた状態)  
もしそうであればデバッグ実行時も昇格した状態となるのでWindowsの仕様でsubstしたパスが見えなくなります。


CC BY-SA 3.0
2015-01-13T03:22:15.847
4469
2015-01-13T03:22:15.847
2505
4465
answer


下記のレジストリを使えばAdministratorでも見える仮想ドライブが作れますよ(詳細はググってください)  
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS
Devices


CC BY-SA 3.0
2015-01-17T16:30:05.227
4758
2015-01-17T16:30:05.227
7504
4465
answer