将文件从脚本目录复制到所有用户的桌面

Posted

技术标签:

【中文标题】将文件从脚本目录复制到所有用户的桌面【英文标题】:Copy file from script directory to All Users' desktop 【发布时间】:2015-12-18 06:02:37 【问题描述】:

我已经编写了下面的脚本,但是当我运行它(使用 PrimalScript 进行故障排除)时,我收到错误“权限被拒绝”。 我是这台设备的管理员,运行提升的脚本时遇到同样的错误。

这是脚本:

Dim WshShell, strCurDir, File, strDesktop

Set WshShell = CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("AllUsersDesktop")
Set ofso = CreateObject("Scripting.FileSystemObject")
strPath = ofso.GetParentFolderName(WScript.ScriptFullName)
File = "pwsafe.psafe3"
strCurDir = ofso.BuildPath(strPath, File)

ofso.CopyFile strCurDir , strDesktop , OverwriteExisting

我做错了什么?

【问题讨论】:

【参考方案1】:

你必须设置一个进程:

Dim ofso, oshell, oproc, strDesktop, overwrite
Set ofso = CreateObject("Scripting.FileSystemObject")
Set oshell = CreateObject("WScript.Shell")
Set oproc  = oshell.Environment("Process")
strDesktop = oproc.Item("UserProfile") & "\Desktop\"
overwrite = True
ofso.CopyFile "pwsafe.psafe3" , strDesktop , overwrite

【讨论】:

如您所见,我只是一个脚本小子,但没有太多时间学习。但是,您的解决方案中的 Dim 缺少逗号。一旦我把它安装到位,它就像一个魅力。谢谢。 这是所有用户配置文件吗?不应该是strDesktop = oproc.Item("ALLUSERSPROFILE") & "\Desktop\"吗? 你不需要对 OPs 代码做太多改动,他们只需要Set oproc = oshell.Environment("Process") 他们就可以使用strDesktop = oproc.Item("AllUsersDesktop") 没问题。 @totalyscrewedup 您确实意识到这不是您所要求的所有用户桌面? 虽然 Sergio 的脚本在本地运行良好,但在通过 primalScript 进行测试期间,它在通过平台运行时因权限问题而失败。由于平台部署通常通过 vbs 创建快捷方式就好了,我很困惑为什么我会收到拒绝访问错误。因此,它不会写入“allusersdesktop”的声明是正确的。我尝试了 Lankymart 的建议,并利用建议对我的原始脚本进行更改,使其看起来像这样,但它因“无效的过程调用或参数”而失败:【参考方案2】:

虽然我上一条评论显示的脚本不起作用,但下面的脚本是 Sergio 和 Lankymart 工作的组合。想提他们两个,因为他们值得称赞。这是工作脚本,我希望其他人可以使用它。

Dim ofso, oshell, oproc, strDesktop, overwrite
Set ofso = CreateObject("Scripting.FileSystemObject")
Set oshell = CreateObject("WScript.Shell")
Set oproc  = oshell.Environment("Process")
strDesktop = oproc.Item("ALLUSERSPROFILE") & "\Desktop\"
overwrite = True
ofso.CopyFile "pwsafe.psafe3" , strDesktop , overwrite

谢谢你们。

【讨论】:

不要将解决方案重新发布为您自己的答案,您应该accept 为您提供解决方案的答案。 由于两者都有贡献,我无法选择其中一个。如果像我这样的另一个菜鸟通过它,他们需要知道正确的代码,而不必猜测什么代码在工作。

以上是关于将文件从脚本目录复制到所有用户的桌面的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSSavePanel 将文件从 Bundle 保存/复制到桌面

如何通过 postinstall npm 脚本自动将文件从包复制到本地目录?

如何将 chrome 书签从单个桌面上的不同用户配置文件复制到另一个网络位置

ubuntu复制文件到bin

ubuntu复制文件

用于将目录从 hdfs 复制到本地的 Shell 脚本