这一切都是在 Windows 10 的环境中,包括客户端和服务器。
背景:某些程序会阻止在共享网络文件夹上安装/运行。我指的不是由于共享/文件权限或需要在 GPO/注册表中启用策略而导致的错误;我的意思是它们会直接告诉您网络安装“不起作用”,然后阻止它们,即使使用映射的网络驱动器(即在本地计算机上将“\SERVER\DriveP”映射到“Z:\”)。
我发现的一个解决方法是在网络共享上创建一个 VHD/VHDX,然后使用本地计算机上的磁盘管理将该 VHD 安装为本地驱动器。例如,我在“\SERVER\DriveP”中创建一个 VHD 文件“VirtualDrive.vhd”,然后将该 VHD 附加到本地 PC 上的“D:\”。这似乎是 100% 透明的,并且功能与物理插入 PC 的驱动器相同;通常阻止(或无法与)映射网络安装的程序可以使用此方法。
简而言之:我使用物理存储在网络驱动器上的本地安装的 VHD 将程序安装在网络驱动器上。
问题:有没有什么方法可以让程序检测到它所运行的驱动器(此示例中为“D:\”)实际上是存储在远程计算机上但在本地安装的 VHD,而不是物理插入 PC 的驱动器?
我认为这可能是一个比 serverfault 更好的社区。
答案1
在足够长的时间内,可以间接确定。它不是 100% 可靠,而且需要大量时间,但这些信息可能会从现实世界中泄露出来。
假设一个程序连续运行,发出许多磁盘请求,并知道它所运行系统的负载情况。当它考虑请求的服务时间时,它最终必须得出结论:当系统没有负载时,某些响应需要很长时间(由于网络流量、拥塞等原因),因此磁盘不可能是连接到主板的真正硬盘。