如何将RUN.LNK固定到任务栏,动词丢失

时间:2014-05-08 02:20:44

标签: powershell taskbar

我发现很难将RUN.LNK固定到我的2012任务栏。我已经在这里和其他地方使用了各种引脚示例,没有运气。我已经尝试了所有RUN.LNK分散在磁盘周围而没有成功。

这些都没有Pin或Unpin动词。 我很困惑,因为我可以手动地从地铁砖上钉。 我无法弄清楚这些来源。 从磁贴中执行打开文件位置会将我转到RUN.LNK,但它没有用于固定的动词。

我想固定RUN,CMD,SERVICES,EVENTS和其他一些日常使用图标。 我的脚本获得了大部分内容,但不是RUN.LNK。

1 个答案:

答案 0 :(得分:1)

解决方案是使用ActiveX对象和FileRun()方法创建新链接。这可以使用Powershell或JScript完成。测试表明,由于Powershell启动延迟,JScript方法的速度更快。

此代码在Powershell 3.0命令窗口中进行复制/粘贴测试。为清楚起见,删除了所有错误检查等。

1)创建包含内容的RUN.JS文件 'new ActiveXObject(“Shell.Application”)。FileRun();'

2)创建一个指向RUN.JS文件的RUN.LNK。

3)将新链接固定到任务栏

# -------------
# Create RUN.JS
# -------------
Out-File -Force -FilePath 'c:\windows\run.js' -InputObject 'new ActiveXObject("Shell.Application").FileRun();'


# -----------
# Create Link
# -----------
$objWsh                  = New-Object -ComObject Wscript.Shell
$objLnk                  = $objWsh.CreateShortcut('c:\windows\run.lnk')
$objLnk.Arguments        = 'c:\windows\run.js'
$objLnk.Description      = 'Open RUN Box'
$objLnk.IconLocation     = 'c:\windows\system32\shell32.dll,-25'
$objLnk.TargetPath       = 'c:\windows\system32\wscript.exe'
$objLnk.WorkingDirectory = 'c:\windows\'
$objLnk.Save()


# --------------
# Pin to Taskbar
# --------------
$objShell = New-Object -ComObject Shell.Application
$objItem  = $objShell.Namespace(0).Parsename('c:\windows\run.lnk')
$objVerb  = $objItem.Verbs() | ? { $_.Name -like '*Pin to Tas*' }
$objVerb.Doit()

# -------
# Cleanup
# -------
[Runtime.InteropServices.Marshal]::ReleaseComObject($objWsh)
[Runtime.InteropServices.Marshal]::ReleaseComObject($objShell)