情况:
- 两个用户帐户,userA 和 userB
- 两个账户都在同一台物理机器上
- 需要将文件从用户A移动到用户B
- 文件不能暴露(对于互联网/其他用户,因此不能使用公共目录)
- 无管理员访问权限
- 最好是可编写脚本并且具有 Windows 内置功能
我试过了:
copy
和的混合runas
- 要么有获取权限,要么有放置权限,但不能同时拥有两者- 共享文件夹 - 需要管理员凭据
这似乎是一个微不足道的问题,但搜索后发现大多是在不同的计算机之间传输,或者传输方法需要管理员访问权限
答案1
将评论和讨论合并为一个答案:
您可以在本地计算机上的用户文件夹之外创建一个文件夹,例如 C: 驱动器根目录,两个用户都可以访问该文件夹。
文件夹上有一个“安全”选项卡(右键单击文件夹并转到“属性”),该选项卡允许您设置文件夹的权限,只允许您希望访问的用户访问。从列表中删除所有用户和组,然后仅添加您希望访问的用户,并设置“允许”选项。默认情况下,所有其他用户都将被拒绝。
要从 CLI 自动执行此操作,您可以尝试使用 VBScript。下面的第一个链接显示了如何执行此操作,第二个链接显示了略有不同的方法,但对可用的选项进行了更多的解释。
https://www.symantec.com/connect/downloads/vbscript-grant-permission
我在这里包含了第二个链接中的代码片段:
Dim oShell, FoldPerm, Calcds, oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oShell = CreateObject("WScript.Shell")
sSysDir = oFSO.GetSpecialFolder(1).Path
If Right(sSysDir,1) <> "\" Then sSysDir = sSysDir & "\"
Calcds = sSysDir & "cacls.exe"
'Chang The folder Name, User and Access rights in the following line of code
FoldPerm = """" & Calcds &"""" & """C:\MyFolder""" & " /E /T /C /G " & """Power Users""" & ":C"
oShell.Run FoldPerm, 1 ,True
我现在还没有办法测试这一点,但我假设微软和赛门铁克网站上分别列出的内容,以及每篇文章的好评,至少是一个值得遵循的好的方向。
答案2
“无管理员访问权限”所以我假设您可以以每个用户的身份登录?
假设如此:
- 以用户 A 身份登录
- 右键单击要共享访问权限的文件夹。
- 选择“安全”选项卡
- 单击“添加”
- 输入用户 B 的名称并单击“查找”以确保匹配(如果在域中,请确保已选择本地计算机)
- 单击“确定”
- 将用户权限设置为“FULL”
- 单击“确定”
- 重复步骤 1 至 8,以用户 B 身份登录并添加用户 A
通过执行上述操作,用户将能够自行在文件夹之间传输文件。
然后,您可以让任一用户登录并运行脚本,将文件直接从一个文件夹复制到另一个文件夹。
编写文件夹复制脚本以便同步内容的简单方法如下(注意,根据 Windows 版本的不同,选项“/DCopy:DAT”可能需要更改为“/DCOPY:T”或完全删除):
REM Copy User A to User B:
Robocopy "C:\Users\UserA\Documents\Folder" "C:\Users\UserB\Documents\Folder" * /S /E /ZB /NP /IT /XJ /DCopy:DAT
REM Copy User B to User A:
Robocopy "C:\Users\UserB\Documents\Folder" "C:\Users\UserA\Documents\Folder" * /S /E /ZB /NP /IT /XJ /DCopy:DAT
您可以将上述内容保存在适当命名的文本文件中,例如“SyncUserAandB.cmd”
(笔记保存文件时,您需要在类型下拉菜单中选择格式“全部”或者记事本会向文件添加一个“.txt”文件,当您在资源管理器中查看该文件时,该文件将被隐藏,除非您关闭“隐藏已知类型的文件扩展名”)
然后用户可以运行该文件,或者您可以以任一用户的身份创建一个 Windows 计划任务,该任务将按照您选择的时间间隔运行该文件。