前提・実現したいこと
c#を利用してASP.NET.COREでネットワークフォルダに新たにフォルダ作成を
しようとしています。
発生している問題・エラーメッセージ
ネットワークフォルダはドメインに参加しているので、WIN32のdllを利用して
認証は成功していますが、その先に新たに日付フォルダを作成しようとすると
「ユーザー名またはパスワードが正しくありません」と表示されていまいます。
エラーメッセージ ユーザー名またはパスワードが正しくありません。
該当のソースコード
// 認証情報を使って接続するWin32 API宣言 [DllImport ("mpr.dll", EntryPoint = "WNetCancelConnection2", CharSet = System.Runtime.InteropServices.CharSet.Unicode)] private static extern int WNetCancelConnection2 (string lpName, Int32 dwFlags, bool fForce); // 認証情報を使って接続するWin32 API宣言 [DllImport ("mpr.dll", EntryPoint = "WNetAddConnection2", CharSet = System.Runtime.InteropServices.CharSet.Unicode)] private static extern int WNetAddConnection2 (ref NETRESOURCE lpNetResource, string lpPassword, string lpUsername, Int32 dwFlags); // WNetAddConnection2に渡す接続の詳細情報の構造体 [StructLayout (LayoutKind.Sequential)] internal struct NETRESOURCE { public int dwScope; //列挙の範囲 public int dwType; //リソースタイプ public int dwDisplayType; //表示オブジェクト public int dwUsage; //リソースの使用方法 [MarshalAs (UnmanagedType.LPWStr)] public string lpLocalName; //ローカルデバイス名。使わないならNULL。 [MarshalAs (UnmanagedType.LPWStr)] public string lpRemoteName; //リモートネットワーク名。使わないならNULL [MarshalAs (UnmanagedType.LPWStr)] public string lpComment; //ネットワーク内の提供者に提供された文字列 [MarshalAs (UnmanagedType.LPWStr)] public string lpProvider; //リソースを所有しているプロバイダ名 }
try {
//既に接続してる場合があるので一旦切断する
ret = WNetCancelConnection2 (backupPath, 0, true);
//共有フォルダに認証情報を使って接続
ret = WNetAddConnection2 (ref netResource, password, userId, 0);
System.Console.WriteLine ("connected successfully...");
} catch (Exception) { }
// 当日バックアップ用フォルダ作成
var today = DateTime.Now;
var todayFolder = today.ToString ("yyyyMMdd");
var destPathParent = System.IO.Path.Combine (new [] { backupPathToSource, todayFolder });
Console.WriteLine (destPathParent);
//コピー先のディレクトリがないときは作る
try {
if (!System.IO.Directory.Exists (destPathParent)) {
System.IO.Directory.CreateDirectory (destPathParent);
Console.WriteLine ("Created Directory.." + destPathParent);
}
catch (Exception ex) {
Console.WriteLine ("----" + ex.Message);
}
試したこと
DirectorySecurityというメソッドがあるようで使ってみようとしましたが、
作成されていないフォルダに設定できるはずもなく、結局解決できませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー