Function std::env::current_exe
1.0.0 · source · pub fn current_exe() -> Result<PathBuf>
Expand description
返回当前正在运行的可执行文件的完整文件系统路径。
特定于平台的行为
如果可执行文件是通过符号链接调用的,则某些平台将返回符号链接的路径,而其他平台将返回符号链接目标的路径。
如果可执行文件在运行时被重命名,平台可能会返回加载时的路径而不是新路径。
Errors
获取当前可执行文件的路径是特定于平台的操作,由于多种原因,该操作可能会失败。 一些错误可能包括但不限于文件系统操作失败或常规 syscall 错误。
Security
这个函数的输出不应该被任何可能有安全隐患的东西信任。 基本上,如果用户可以运行可执行文件,他们可以任意更改输出。
例如,您可以很容易地引入一个竞态条件。它是这样的:
- 您可以使用
current_exe()
获取当前可执行文件的路径,并将其存储在一个变量中。 - 时间流逝。恶意行为者删除当前可执行文件,并将其替换为恶意文件。
- 然后,您使用存储的路径重新执行当前的可执行文件。
您希望安全地执行当前的可执行文件,但您正在执行一些完全不同的东西。您刚刚执行的代码以您的权限运行。
如果不正确使用会 导致特权升级,这种行为是已知的。
Examples
use std::env;
match env::current_exe() {
Ok(exe_path) => println!("Path of this executable is: {}",
exe_path.display()),
Err(e) => println!("failed to get current exe path: {e}"),
};
Run