Windows CE 6 上的 SMB 文件共享
SMB Filesharing on Windows CE 6
我正在尝试在 Windows CE 6 设备上配置 SMB 文件共享服务器。
我最初的尝试主要是 NK.exe 的桌面版本。
当我启动时,SMB0: 是 运行 as smbserver.dll
我已经(希望)设置了合适的注册表值,然后重新启动了 SMBServer 进程:
服务刷新 SMB0:
但是,当我尝试连接 SMB 客户端时(例如,通过在桌面 windows 中查找文件共享,或尝试将 SMB 客户端连接到WinCE 设备。
我想知道 SMB 注册表设置是否有必要在启动时可用?我的设备未使用基于配置单元的注册表,因此注册表设置在启动时不可用。我希望刷新 SMB 服务器进程足以让文件共享继续进行。这样,我就可以在我的应用程序中以编程方式设置注册表值,重新启动 SMB 服务,而不必重建信息亭 NK.exe(信息亭 NK.exe 似乎包括 smbserver.dll - 它是由一个不太称职的第三方建造的,重建它的工具可以追溯到 Visual Studio 2005 年。重建 NK.exe) 将是 "interesting")。
我是否需要重建 OS 才能使用基于配置单元的注册表?
有什么想法吗?
我的注册表设置都在HKEY_LOCAL_MACHINE:
下
Ident\Name "aName"
Ident\Desc, "A string"
Ident\OrigName "Another string"
\Services\Smbserver\SMB\Shares\VirtualRoot\Type Dword:0
\Services\Smbserver\SMB\Shares\VirtualRoot\Path "a valid path"
\Services\Smbserver\SMB\Shares\VirtualRoot\UserList "*"
\Services\Smbserver\AdapterList "*"
\Services\Smbserver\Keep DWord:0
\Services\Smbserver\Prefix "SMB"
\Services\Smbserver\Index DWord: 0
\Services\Smbserver\SHARES\UseAuthentication DWord:0L
如您所见,我暂时关闭了身份验证 - 我希望首先让它在 CE 桌面环境中运行,然后添加身份验证,并使其在 kiosk 环境中运行。
如有任何帮助,我将不胜感激!
我会说你需要根据 MSDN docs:
设置 "Keep"=dword:1
Keep Default set to 1. If this is set to zero (0), the DLL will be
unloaded immediately after initialization.
SMB 服务器不需要基于配置单元的注册表。我们已经在多个仅基于 RAM 的注册表的项目中使用了它。
供参考,这些是我们在 CE 7 上用于将根文件夹公开为 \<IP address>\Root
:
的注册表设置
[HKEY_LOCAL_MACHINE\Services\SMBServer\Shares\Root]
"Path"=""
"Type"=dword:0
[HKEY_LOCAL_MACHINE\Services\SMBServer]
"AdapterList"="*"
"Keep"=dword:1
"Prefix"="SMB"
"Index"=dword:0
"DLL"="smbserver.dll"
"Order"=dword:12
[HKEY_LOCAL_MACHINE\Services\Smbserver\Shares]
"UseAuthentication"=dword:0
"NoSecurity"=dword:1
这里还有另一个问题,即 Windows CE 6 SMB 服务器默认使用 NTLM ver 1。Windows 7 及更高版本默认需要 NTLM version 2。
为了让您的 Windows 7+ 系统看到 SMB 共享,有必要修改安全策略:
在 Windows 7,运行 secpol.msc,找到安全设置 -> 本地策略 -> 安全选项。查找 LAN Manager 身份验证级别,并将其设置为“仅发送 NTLM 响应”
我正在尝试在 Windows CE 6 设备上配置 SMB 文件共享服务器。
我最初的尝试主要是 NK.exe 的桌面版本。 当我启动时,SMB0: 是 运行 as smbserver.dll
我已经(希望)设置了合适的注册表值,然后重新启动了 SMBServer 进程:
服务刷新 SMB0:
但是,当我尝试连接 SMB 客户端时(例如,通过在桌面 windows 中查找文件共享,或尝试将 SMB 客户端连接到WinCE 设备。
我想知道 SMB 注册表设置是否有必要在启动时可用?我的设备未使用基于配置单元的注册表,因此注册表设置在启动时不可用。我希望刷新 SMB 服务器进程足以让文件共享继续进行。这样,我就可以在我的应用程序中以编程方式设置注册表值,重新启动 SMB 服务,而不必重建信息亭 NK.exe(信息亭 NK.exe 似乎包括 smbserver.dll - 它是由一个不太称职的第三方建造的,重建它的工具可以追溯到 Visual Studio 2005 年。重建 NK.exe) 将是 "interesting")。
我是否需要重建 OS 才能使用基于配置单元的注册表?
有什么想法吗?
我的注册表设置都在HKEY_LOCAL_MACHINE:
下 Ident\Name "aName"
Ident\Desc, "A string"
Ident\OrigName "Another string"
\Services\Smbserver\SMB\Shares\VirtualRoot\Type Dword:0
\Services\Smbserver\SMB\Shares\VirtualRoot\Path "a valid path"
\Services\Smbserver\SMB\Shares\VirtualRoot\UserList "*"
\Services\Smbserver\AdapterList "*"
\Services\Smbserver\Keep DWord:0
\Services\Smbserver\Prefix "SMB"
\Services\Smbserver\Index DWord: 0
\Services\Smbserver\SHARES\UseAuthentication DWord:0L
如您所见,我暂时关闭了身份验证 - 我希望首先让它在 CE 桌面环境中运行,然后添加身份验证,并使其在 kiosk 环境中运行。
如有任何帮助,我将不胜感激!
我会说你需要根据 MSDN docs:
设置"Keep"=dword:1
Keep Default set to 1. If this is set to zero (0), the DLL will be unloaded immediately after initialization.
SMB 服务器不需要基于配置单元的注册表。我们已经在多个仅基于 RAM 的注册表的项目中使用了它。
供参考,这些是我们在 CE 7 上用于将根文件夹公开为 \<IP address>\Root
:
[HKEY_LOCAL_MACHINE\Services\SMBServer\Shares\Root]
"Path"=""
"Type"=dword:0
[HKEY_LOCAL_MACHINE\Services\SMBServer]
"AdapterList"="*"
"Keep"=dword:1
"Prefix"="SMB"
"Index"=dword:0
"DLL"="smbserver.dll"
"Order"=dword:12
[HKEY_LOCAL_MACHINE\Services\Smbserver\Shares]
"UseAuthentication"=dword:0
"NoSecurity"=dword:1
这里还有另一个问题,即 Windows CE 6 SMB 服务器默认使用 NTLM ver 1。Windows 7 及更高版本默认需要 NTLM version 2。
为了让您的 Windows 7+ 系统看到 SMB 共享,有必要修改安全策略:
在 Windows 7,运行 secpol.msc,找到安全设置 -> 本地策略 -> 安全选项。查找 LAN Manager 身份验证级别,并将其设置为“仅发送 NTLM 响应”