Win32とかなんとかを初体験

  • DFSの名前空間作ったりフォルダリンク作ったりをC#で実施するのだけどそういうことを全くしたことが無くて初体験でした。またしても自分用のメモ代わりに。。。
  • DFSにフォルダリンク作成。リンク先のフォルダが無くても作れる。
    • こんな感じNetDfsAdd(@"nantoka\hoge\huga", serverName, filepath, comment, 1);
 [DllImport("Netapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
 private static extern int NetDfsAdd(
 [MarshalAs(UnmanagedType.LPWStr)] string DfsEntryPath,
 [MarshalAs(UnmanagedType.LPWStr)] string ServerName,
 [MarshalAs(UnmanagedType.LPWStr)] string PathName,
 [MarshalAs(UnmanagedType.LPWStr)] string Comment,
 int Flags
 );
  • DFSからフォルダリンク削除
 [DllImport("Netapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
 private static extern int NetDfsRemove(
 [MarshalAs(UnmanagedType.LPWStr)] string DfsEntryPath,
 [MarshalAs(UnmanagedType.LPWStr)] string ServerName,
 [MarshalAs(UnmanagedType.LPWStr)] string PathName
 );
  • DFSに名前空間を追加。相手が存在しないとエラーになる。
 [DllImport("Netapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
 private static extern int NetDfsAddFtRoot(
 [MarshalAs(UnmanagedType.LPWStr)] string ServerName,//darssbdc
 [MarshalAs(UnmanagedType.LPWStr)] string RootShare,
 [MarshalAs(UnmanagedType.LPWStr)] string FtDfsName,
 [MarshalAs(UnmanagedType.LPWStr)] string Comment,
 int Flags
 );
 [DllImport("Netapi32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern int NetDfsRemoveFtRootForced(
 [MarshalAs(UnmanagedType.LPWStr)] string DomainName,
 [MarshalAs(UnmanagedType.LPWStr)] string ServerName,
 [MarshalAs(UnmanagedType.LPWStr)] string RootShare,
 [MarshalAs(UnmanagedType.LPWStr)] string FtDfsName
 );

ほんとは共有設定とかもしたけどそっちはまんまどこかのサイトから利用しただけなので省略。