2017-08-23 21 views
0

ディレクトリからファイルを取得するConsoleApp(asp.netではなく)があります(このアプリケーションはWindows Server 2012上で動作します)。 アプリはローカルディレクトリと共有ディレクトリ(「\\ MyShare \ dest」など)であっても正常に動作します。私はのmyshare \\」からXへ(シェアをマップするときに:)私はマップされたネットワークドライブにアクセスできない

DirectoryNotFoundExceptionを得る。

ファイルの一部が260文字の制限を超えているので、しかし、私は、ドライブをマップする必要があります。。私は私のPC上で私のアプリをデバッグするときにマップされたドライブへのアクセス中にさらに、私はエラーを取得しない 任意の助けを事前に

感謝:)

PS:私は他の記事を見てきました問題はアプリdである適切なユーザー権限として実行されません。私のアプリは自分の資格情報を使って実行されるので、ユーザーのためにマップが存在します..

編集:あなたの助けを借りて少し回避策を実行しました。代わりにマップされたネットワークドライブを作成する私はmklinkコマンドを使用し、それは私の共有のショートカット製:

MKLINK/DのC:\ MyShortcut \\ myshareのヘルプ皆のため

感謝を

+0

あなたのアプリをスケジュールされたタスクとして実行していますか? – MatSnow

+0

はUACを使用していますか?あなたは無人で、またはVSから走っていますか?どのようにファイルとディレクトリ(コードを含む)にアクセスして使用しますか?それ以外の場合はserverfault.stackexchange.com – dlatikay

+0

@MatSnow windowsサービスに移動する必要があります。アプリケーションは常に実行されます – user8506804

答えて

0

質問とコメントを正しく理解していれば、マップされたドライブにアクセスできません。なぜなら、マッピングはアプリケーションから見えないからです。私の理解によれば、プラットフォーム呼び出し、より正確には次の2つの機能と構造を使用して、プログラムで共有に接続することは可能です。

[DllImport("Mpr.dll")] static extern int WNetUseConnection(
    IntPtr hwndOwner, 
    NETRESOURCE lpNetResource, 
    string lpPassword, 
    string lpUserID, 
    int dwFlags, 
    string lpAccessName, 
    string lpBufferSize, 
    string lpResult 
); 

[DllImport("Mpr.dll")] static extern int WNetCancelConnection2(
    string lpName, 
    int dwFlags, 
    bool fForce 
); 

[StructLayout(LayoutKind.Sequential)] class NETRESOURCE 
{ 
    public int dwScope = 0; 
    public int dwType = 0; 
    public int dwDisplayType = 0; 
    public int dwUsage = 0; 
    public string lpLocalName = ""; 
    public string lpRemoteName = ""; 
    public string lpComment = ""; 
    public string lpProvider = ""; 
} 

機能はherehere文書化されています。 thisthisの質問が関連する可能性があります。

関連する問題