Windows CE 6上的SMB文件共享

时间:2016-09-25 17:38:41

标签: windows-ce smb

我尝试在Windows CE 6设备上配置SMB文件共享服务器。

我最初的尝试主要是使用桌面版的NK.exe。 当我启动时,SMB0:作为smbserver.dll运行

我已设置(希望)合适的注册表值,然后重新启动SMBServer进程:

服务刷新SMB0:

但是,当我尝试连接SMB客户端时(例如,通过在桌面窗口中查找文件共享,或尝试将SMB客户端连接到WinCE设备的IP地址),我从未看到所通告的服务。

我想知道SMB注册表设置是否在启动时可用?我的设备不使用基于配置单元的注册表,因此注册表设置无法启动。我希望刷新SMB服务器进程足以让文件共享。这样,我可以在我的应用程序中以编程方式设置注册表值,重新启动SMB服务,而不必重建kiosk NK.exe(kiosk NK.exe似乎包含smbserver.dll - 它是由一个不是很称职的第三方,重建它的工具可以追溯到Visual Studio 2005.重建NK.exe会很有趣#34;

我是否需要重建操作系统以使用基于配置单元的注册表?

有什么想法吗?

我的注册表设置全部在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桌面环境中运行,然后添加身份验证,并让它在自助服务终端中运行环境。

我很感激任何帮助!

2 个答案:

答案 0 :(得分:4)

我会说您需要根据MSDN docs设置"Keep"=dword:1

  

保持默认设置为1.如果将其设置为零(0),则DLL将为   初始化后立即卸载。

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

答案 1 :(得分:3)

此处还有另一个问题,即Windows CE 6 SMB服务器默认使用NTLM ver 1.默认情况下,Windows 7及更高版本需要NTLM版本2.

为了让您的Windows 7+系统能够查看SMB共享,​​修改安全策略是必要的:

在Windows 7上,运行secpol.msc,找到安全设置 - &gt;本地政策 - &gt;安全选项。查找LAN Manager身份验证级别,并将其设置为“仅发送NTLM响应”