在Mint系统中通过Mono从SMB共享运行.NET应用的问题
解决Mono直接运行SMB共享.NET程序的问题
Mono无法直接识别SMB URL路径,它只能访问本地文件系统路径。要创建桌面快捷方式直接运行共享上的EXE,需先将SMB共享挂载到本地目录,再通过本地路径调用Mono。
步骤1:挂载SMB共享到本地目录
- 安装必要工具(未安装时执行):
sudo apt install cifs-utils
- 创建挂载点目录:
sudo mkdir /mnt/smbshare
- 临时挂载共享(替换为你的实际信息):
sudo mount -t cifs //xxx.xxx.xxx.xxx/Share /mnt/smbshare -o username=你的SMB用户名,password=你的SMB密码,uid=$UID,gid=$GID
uid=$UID和gid=$GID用于让当前用户拥有挂载目录的访问权限,避免权限问题。- 若不想明文输入密码,可创建凭证文件:
写入内容:sudo nano /etc/smbcredentials
设置文件权限:username=你的SMB用户名 password=你的SMB密码
挂载命令改为:sudo chmod 600 /etc/smbcredentialssudo mount -t cifs //xxx.xxx.xxx.xxx/Share /mnt/smbshare -o credentials=/etc/smbcredentials,uid=$UID,gid=$GID
- 设置开机自动挂载(可选):
编辑/etc/fstab文件:
sudo nano /etc/fstab
添加一行:
//xxx.xxx.xxx.xxx/Share /mnt/smbshare cifs credentials=/etc/smbcredentials,uid=$UID,gid=$GID 0 0
保存后执行sudo mount -a验证生效情况。
步骤2:创建桌面快捷方式(.desktop文件)
- 在桌面新建
Program.desktop文件,写入以下内容:
[Desktop Entry] Name=你的程序名称 Comment=运行SMB共享上的.NET程序 Exec=mono /mnt/smbshare/Program.exe Icon=/path/to/your/icon.png # 可选,替换为实际图标路径 Terminal=false # 无需终端窗口则设为false Type=Application Categories=Utility;Application;
- 赋予文件可执行权限:
chmod +x ~/Desktop/Program.desktop
双击该快捷方式即可直接运行共享上的程序。
替代方案:脚本自动挂载并运行(适合临时使用)
若不想永久挂载,可编写shell脚本:
- 创建
run_program.sh文件:
nano run_program.sh
写入:
#!/bin/bash # 检查是否已挂载 if ! mountpoint -q /mnt/smbshare; then sudo mount -t cifs //xxx.xxx.xxx.xxx/Share /mnt/smbshare -o credentials=/etc/smbcredentials,uid=$UID,gid=$GID fi # 运行程序 mono /mnt/smbshare/Program.exe # 可选:程序退出后卸载共享 # sudo umount /mnt/smbshare
- 赋予可执行权限:
chmod +x run_program.sh
- 桌面快捷方式的
Exec指向该脚本:
Exec=/path/to/run_program.sh
内容的提问来源于stack exchange,提问作者da_jokker
相关产品推荐
相关产品推荐

