如何获得对网络位置的访问权限?

VCD*_*_WL 6 windows networking rust

我的程序在随系统启动时无法访问网络位置:

fn main() {
    ensure_network("\\\\SERVER\\".to_string());
}

fn ensure_network(network_dir: String) {
    let timer = std::time::Instant::now();
    let mut prev_counter = 0;
    loop {
        if std::fs::read_dir(&network_dir).is_ok() {
            break;
        }
        if timer.elapsed().as_secs() > prev_counter + 60 {
            println!("Still Failing.");
            prev_counter = timer.elapsed().as_secs();
        }
        std::hint::spin_loop();
    }
    println!("Network access obtained (Time elapsed: {})",
        timer.elapsed().as_secs_f32());
}
Run Code Online (Sandbox Code Playgroud)

编辑(在对问题进行大量研究后重述问题):

该程序使用任务计划程序随 PC 一起启动。它设置为“仅在用户登录时运行”和“以最高权限运行”。然而,大多数时候程序无法找到连接并给出错误,"The user name or password is incorrect. (os error 1326)."

  • 使用管理员权限手动运行该程序会成功。
  • 有时该程序会在启动时成功,但这种情况很少见。
  • 如果程序进入循环后启动任何其他应用程序,则该程序将成功。as administrator

小智 1

在任务计划程序上,您可以延迟任务的执行。

如果您在登录后执行它是可以的,但是当您和登录之间存在 Active Directory 或域系统时,与共享存储的连接可能需要一段时间,并且程序可能会在此之前尝试执行。尝试延迟 10-20 秒,看看这是否可以解决您的问题。

如果它不起作用,再次假设您在中间有一个域,您可能需要显式提供用户和密码才能访问您要查找的目录所在的网络。