Page 1 of 1

SMB Issue

Posted: Thu Aug 30, 2018 12:25 pm
by pweisbrot
Our application is an xBase++ application that has been using SMB1. This is because SMB2 forces the use of OpLocks which can cause database data corruptions. Windows 10 has recently disabled SMB1. We need to figure out a way to use SMB2, so that Windows 10 machines can still communicate with the Windows 7 machines.

We read that installing the “SMB2 Workstation Configuration” patch on the Windows 7 computers can fix this issue ( http://www.alaska-software.com/community/smb2.cxp ). Will that work, or is there something else that can be done to prevent file/data corruption when using SMB2 between Windows 7 and 10 computers?

Thank you,
Preston

Re: SMB Issue

Posted: Thu Aug 30, 2018 6:20 pm
by Auge_Ohr
pweisbrot wrote:been using SMB1. This is because SMB2 forces the use of OpLocks
AFAIK, OpLocks is include in SMB1 else you can't share File :naughty:
pweisbrot wrote:We need to figure out a way to use SMB2
SMB1 use Drive Letter by Lanmanager over UDP Port 135-139 and these are default disable on a "new" PC with Windows 10

---
i guess you can PING other Computer :?:
btw. i recommend to use Static IP for each PC instead of DHCP.

now if you want to access a folder try

Code: Select all

DIR \\192.168.xxx.xxx\Sharefolder\*.*
or
DIR \\Pcname\Sharefolder\*.*
so if you have a Function NET_USE() you just have to change "Driveletter+Path" to "UNC-Path"

---

the Difference of SMB1 vs. SMB2 is a local Cache which can make Problem.
e.g. PDR 6954 ( File() return .T. after file was deleted )

Patch from Alaska disable Cache with 3 Parameter (set to 0 = zero )
see https://docs.microsoft.com/en-us/previo ... 0(v=ws.10)

Code: Select all

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters

DirectoryCacheLifetime
FileNotFoundCacheLifetime
FileInfoCacheLifetime
i use a RAMDISK (ImDisk) and share %TEMP% on it

---

if your App have work before it should work now same Way.

if not People most try to change DBESYS but thats IMHO NOT the Way :naughty:
only DATA-Component ***_LIFETIME set to 0 (zero) make Sence for Network and Threads