sambrs

Crates.iosambrs
lib.rssambrs
version0.1.2
sourcesrc
created_at2024-07-28 17:42:01.374945
updated_at2024-07-29 12:26:46.258123
descriptionA tiny ergonomic wrapper around WNetAddConnection2A to connect to SMB shares on Windows.
homepage
repositoryhttps://github.com/samvdst/sambrs
max_upload_size
id1318117
size24,169
Samuel (samvdst)

documentation

https://docs.rs/sambrs

README

Sambrs

A tiny ergonomic wrapper around WNetAddConnection2A and WNetCancelConnection2A. The goal is to offer an easy to use interface to connect to SMB network shares on Windows.

Sam -> SMB -> Rust -> Samba is taken!? -> sambrs

Features

  • Simple and ergonomic interface to connect to SMB network shares.
  • Support for specifying a local Windows mount point.
  • Options to persist connections across user login sessions.
  • Interactive mode for password prompts.

Installation

Add this to your Cargo.toml:

[dependencies]
sambrs = "0.1"

Usage

Instantiate an SmbShare with an optional local Windows mount point and establish a connection.

When calling the connect method, you have the option to persist the connection across user login sessions and to enable interactive mode. Interactive mode will block until the user either provides a correct password or cancels, resulting in a Canceled error.

use sambrs::SmbShare;

fn main() {
    let share = SmbShare::new(r"\\server\share", "user", "pass", Some('D'));

    match share.connect(false, false) {
        Ok(()) => println!("Connected successfully!"),
        Err(e) => eprintln!("Failed to connect: {}", e),
    }

    // use std::fs as if D:\ was a local directory
    dbg!(std::fs::metadata(r"D:\").unwrap().is_dir());
}

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Special Thanks

Special thanks to Christian Visintin for his informative blog post on accessing SMB shares with Rust on Windows. If you need a fully-featured remote file access solution that works across multiple protocols, you should definitely check out his project remotefs.

Commit count: 0

cargo fmt