ドライブ "Z:\"としてマップされているネットワーク上のファイルをいくつか更新するWindowsサービスがあります。管理者としてVSからコードを実行すると、マップされたドライブ上のファイルをコピーすることができますが、管理者アカウントで実行されているサービスから実行されると同じことが失敗します。 マップされたドライブは、サービスが実行されている同じアカウントから作成されます。なぜそれがVSから実行されるときに動作するのか困惑しますが、サービスからは出ません。 ネットワークドライブよりもUNCを使用する方が良いですか? 以下のフォーラムで回避策があります http://support.microsoft.com/default.aspx?scid=kb;en-us;827421#appliesto UNC not mappedドライブが使用されています。パスの一部を見つけることができませんでした:Windowsサービスを使用してマップされたドライブ上のファイルをコピー中
2
A
答えて
3
私はUNCが良いアイデアであることを示唆しています。
マップされたドライブがログイン時にマップされる場合はどうなりますか?ログインしていなくてもサービスが実行されるため、マッピングが作成されないことがあります。
3
私たちもこれを経験しましたが、私たちの決議がなぜ機能するのかは分かりませんが、私はあなたに何が働いたのかを伝えることができます。
ドライブ内のコードをマップします。同じアカウントを使用しているからといって、マップされているドライブに依存しないでください。
私たちが見た行動に基づいて、これは私たちの状況で起こっていたGUESSとあなたの状況についてです。
私たちが問題を抱えていたサービスは、ログインスクリプトでマップされたドライブを使用していました。マシンが同じユーザーとしてログインしていた場合、それは機能していましたが、うまくいきませんでした。それに基づいて、私はドライブが本当に「ログオン」していないため、ドライブがマップされていないと推測しました。
ドライブのコードをマッピングして固定しました。
また、UNCパスを直接参照することもできますが、権限の問題もあります。ドライブをマッピングし、ユーザー名とパスワードを渡すと、私たちの方がはるかにうまく機能しました。
これを実行するための当社のコード:
public static class NetworkDrives
{
public static bool MapDrive(string DriveLetter, string Path, string Username, string Password)
{
bool ReturnValue = false;
if(System.IO.Directory.Exists(DriveLetter + ":\\"))
{
DisconnectDrive(DriveLetter);
}
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "net.exe";
p.StartInfo.Arguments = " use " + DriveLetter + ": " + '"' + Path + '"' + " " + Password + " /user:" + Username;
p.Start();
p.WaitForExit();
string ErrorMessage = p.StandardError.ReadToEnd();
string OuputMessage = p.StandardOutput.ReadToEnd();
if (ErrorMessage.Length > 0)
{
throw new Exception("Error:" + ErrorMessage);
}
else
{
ReturnValue = true;
}
return ReturnValue;
}
public static bool DisconnectDrive(string DriveLetter)
{
bool ReturnValue = false;
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "net.exe";
p.StartInfo.Arguments = " use " + DriveLetter + ": /DELETE";
p.Start();
p.WaitForExit();
string ErrorMessage = p.StandardError.ReadToEnd();
string OuputMessage = p.StandardOutput.ReadToEnd();
if (ErrorMessage.Length > 0)
{
throw new Exception("Error:" + ErrorMessage);
}
else
{
ReturnValue = true;
}
return ReturnValue;
}
}
を上記のクラスを使用して、あなたは自由にドライブをマップして切断することができます。これがサービスの場合は、必要な直前にドライブをマッピングし、必要な直後にドライブを切断することをお勧めします。
0
私は同じ問題を解決するために(〜3日間)苦労しました。 NTFSとファイルレベルのアクセス許可に関連しているようです。ドライブではなく共有の場所を使用する方がよいでしょう。
関連する問題
- 1. パスの一部を見つけることができませんでした
- 2. Windowsクライアントの「パスの一部を見つけることができませんでした」
- 3. ファイルのインラインスローを表示する 'パスの一部を見つけることができませんでした'
- 4. asp.net mvcアプリケーションでパスの一部を見つけることができませんでした 'というエラー
- 5. マップされたドライブに新しいフォルダを見つけることができません
- 6. ネットワークパスでパスの一部を見つけることができませんでした
- 7. Visual Studio for Macでパスの一部を見つけることができませんでした
- 8. エラーメッセージの表示:「パスの一部を見つけることができませんでした」
- 9. Cのパスの一部を見つけることができませんでした
- 10. ウェブサイトのエラーからダウンロード - パスの一部を見つけることができませんでした
- 11. はパスの一部を見つけることができません
- 12. "パスの一部を見つけることができませんでした" DownloadFile
- 13. System.IO.DirectoryNotFoundException:パスの一部を見つけることができませんでした
- 14. .Net Core 2 "DirectoryNotFoundException:パスの一部を見つけることができませんでした"
- 15. パブリッシュ:パスの一部を見つけることができませんでした... \ obj \ DEV \ AspnetCompileMerge \ Source \ bin \ roslyn \ csc.exe '
- 16. dnu復元エラー(パスの一部を見つけることができませんでした)
- 17. System.IO.DirectoryNotFoundException、パスの一部を見つけることができませんでした
- 18. パスの一部を見つけることができませんでした:Server.mapPath
- 19. "DirectoryNotFoundException:パスの一部を見つけることができませんでした"
- 20. System.IO.DirectoryNotFoundException: 'パスの一部を見つけることができませんでした。'
- 21. タスクは、SDKツールのパスを使用してAL.exeを見つけることができませんでした
- 22. サーバ上のパスエラーの一部を見つけることができませんでした
- 23. プロパティ '$ YourPropertyHere'をデフォルト値から作成できませんでした。エラーメッセージ:パスの一部を見つけることができませんでした。%temp%
- 24. パックURIを使用してリソースを見つけることができませんが、相対パスでリソースを見つけることができません。
- 25. org.apache.ignite.IgniteException:デプロイされたサービスを見つけることができません
- 26. findViewByIdを呼び出して一部のコンポーネントを見つけることができませんでした。
- 27. パスの一部が見つかりませんでした。
- 28. (Phoenix.ActionClauseError)が一致を見つけることができませんでした
- 29. カスタムアクションがインストールされたファイルを見つけることができません
- 30. Windows 10のPython:os.rename()はos.path.exists()が見つけたファイルを見つけることができません。
これは、複数の同時接続試行では機能しません。 –