如何确保 iSCSI 就绪之后再登录用户/启动 explorer.exe

230 天前
 liyafe1997

家里父母的电脑他们习惯把文件放在桌面上,确实也很方便,为了防止硬盘损坏导致丢文件,我在 NAS 里创建了一个 iSCSI 然后挂载到父母的电脑上,然后把桌面转移到 iSCSI 分区里( D:\Desktop ),但是启动时经常会出现下图的情况

很明显就是 explorer 加载的时候 iSCSI 还没连上,有什么 trick 能确保 explorer 加载之前,甚至用户登录之前,先连上 iSCSI 吗?

1833 次点击
所在节点    Windows
22 条回复
xixiv5
230 天前
你试试计划任务 开机运行 bat 或者 PowerShell
liyafe1997
230 天前
@xixiv5 不是 iSCSI 不会自动连,Windows 的 iSCSI 配好之后是会自动连接的,但是它不能保证在用户登录的时候 iSCSI ready ,所以就会导致上面的情况,也不是每次都出现,重启大概 30%概率出现。
wuzhewuyou
230 天前
那么,无盘启动的电脑用了啥绝技?始终能找到 iscsi 盘
liyafe1997
230 天前
@wuzhewuyou 那是因为直接从 iscsi 盘引导的
gregy
230 天前
用计划任务在开机以后重启 explorer 进程试试呢
geelaw
230 天前
写一个自定义的 shell ,然后设置目标用户的 HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 里面的 Shell 值( REG_SZ 字符串)为你的 shell 的完整路径。

你的 shell 需要是一个 GUI 程序,并且 bitness 和系统相符,它调用 SHGetKnownFolderPath 获得用户的桌面文件夹,注意 dwFlags 应该设置 KF_FLAG_DONT_VERIFY ,然后等待这个文件夹可以被访问(或者超过固定时间),然后 CreateProcessW 启动 explorer.exe ,然后自己退出。

参考阅读:
https://learn.microsoft.com/en-us/previous-versions/windows/embedded/ms838576(v=winembedded.5)?redirectedfrom=MSDN
https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderpath
https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessw
vibbow
230 天前
如果只是为了文件防丢,那用 goodsync 自动同步到 nas 里就行呀
NewYear
230 天前
@geelaw

这里涉及另外一个知识点,就是如何让杀毒软件认为这是用户自己的行为,加入进去的程序是自己写的,不是病毒篡改的,要不下次肯定会“自动修复”掉。

像 Windows 开放了很多入口给程序员使用,然而现在都是成为了“病毒专属”,杀毒软件对待这些入口就像对待“漏洞”一样,有一个消灭掉一个。。。。
BwNVlwSq
230 天前
用同步工具把桌面同步过去就行了吧。。。
kokutou
230 天前
组策略 计算机启动和登录时总是等待网络 打开试试?
gamexg
230 天前
弄个自动备份吧
我感觉自动同步更可靠,至少自动同步是本机+NAS 两份
目前的情况万一 NAS 故障文件直接看不到了

第三方的备份软件,或者直接用 windows 的备份
windows 的备份支持备份到局域网 smb ,开启后可以做到开启备份的文件每小时备份一个快照到 NAS.
ladypxy
230 天前
正确做法应该是使用 SMB 然后用组策略把用户目录重定向

如果非要用 iscsi ,你这问题可以通过修改服务,把 iscsi 设置为某个先启动服务的依赖项即可
geelaw
230 天前
@NewYear #8 可以把程序放在只有该用户有权限控制的位置,然后设置杀毒软件的忽略名单。我自己的某些用户用 PowerShell 作为 shell ,没有被修改过。另外就是 shell 的设置不值得病毒使用,因为想要做到开机自启有无数种办法(任务计划、Run 、RunOnce 等等等等),把自己设置为 shell 是非常麻烦的一种。
sunnysab
230 天前
我觉得可以按 #12 的方案试一下。

还有一个加补丁的方案:自己写一个简单的 Windows 服务,在服务加载时阻塞 Windows 的启动,直到 D:\ 的状态为 Ready :D
hxy100
230 天前
通篇看下来,还是叫觉得 6 楼 geelaw 给出的方案最为靠谱;
liyafe1997
230 天前
@ladypxy 我试了下把那个 MSiSCSI 设为 User Profile 的依赖项,但是这样启动会变得很慢,卡在欢迎那里转圈圈至少 2 分钟,这时 iSCSI 肯定已经启动了的,我在 NAS 那边都已经看到已连接了。
liyafe1997
230 天前
@ladypxy SMB 会不会也有这个问题?启动的时候 SMB 没连接
Greatshu
229 天前
你怎么觉得 NAS 硬盘比电脑硬盘更稳定,NAS ,网线,路由器都是新的故障点。这没有解决问题,只是转移的问题并制造了新的问题。
NewYear
229 天前
@geelaw 谢谢
liyafe1997
229 天前
@Greatshu 主要是数据安全,NAS 有 RAID1 还有快照冷备,防止电脑硬盘突然损坏丢文件

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1028294

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX