情况是这样的。我们有一台 Synology NAS(运行 DSM 5.0),托管一个名为 的 Windows 文件共享general
。此文件夹的权限设置如下图所示:
此文件夹在 Windows 7(32 位)客户端上用作映射网络驱动器(映射为Z:
)。此共享无需身份验证。即每个人都可以访问它。
旧版 Microsoft BASIC 7 程序位于此映射驱动器上。此程序本身(例如PROGRAM.EXE
)可正常运行。它可以运行,可以创建文件和文件夹等。这里没有问题。
当程序创建一个临时文件(例如INVOICE.TXT
)然后尝试启动另一个进程(即以良好的方式打印创建的文本文件)时,就会出现问题。根据程序开发人员的说法,它用于SHELL Z:\INVOICE.EXE
启动此进程。执行此操作时,程序显示的内容是:Access denied
。
奇怪的是,当我INVOICE.EXE
从 Windows 资源管理器手动运行时,一切顺利(即打印了发票)。
我想补充一点,当两个程序都在本地磁盘上,或者在另一个 Windows 主机的共享磁盘上时,一切顺利。
我不知道出了什么问题。到目前为止我尝试过的方法是:
- 已禁用 UAC。
- 将 Synology 的 IP 地址添加到 Internet Explorer 的受信任网站。
- 当两个程序都在本地磁盘上时,一切都运行良好。
- 当两个程序都位于另一台 Windows 机器的共享位置时,一切都运行良好。
PROGRAM.EXE
以管理员身份运行(这仅在以下情况下有效:与所有用户共享映射驱动器)。更改了文件夹的权限,如屏幕截图所示。其目录内容现在如下所示:
synology> ls -l /volume1 ... drwxrwxrwx 33 guest users 4096 Oct 2 14:28 general ...
所有子文件夹和文件都具有相同的权限。 随附内容
synoacltool
显示了文件夹(以及子文件夹 + 文件)的权限:synology> synoacltool -get /volume1/general ACL version: 1 Archive: has_ACL,is_support_ACL Owner: [guest(user)] --------------------- [0] group:users:allow:r-x---a-R-c--:---n (level:0) [1] everyone::allow:rwxpdDaARWcCo:fd-- (level:0)
但一切都没有发挥作用……
答案1
尝试禁用 SMBv2在 Windows 7 客户端上。许多用户报告在旧版应用程序或非 Windows 系统上使用较新版本的 SMB 时出现问题。
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled
必须以管理员身份运行并且必须重新启动才能使命令生效。