我发现很难将RUN.LNK固定到我的2012任务栏。我已经在这里和其他地方使用了各种引脚示例,没有运气。我已经尝试了所有RUN.LNK分散在磁盘周围而没有成功。
这些都没有Pin或Unpin动词。 我很困惑,因为我可以手动地从地铁砖上钉。 我无法弄清楚这些来源。 从磁贴中执行打开文件位置会将我转到RUN.LNK,但它没有用于固定的动词。
我想固定RUN,CMD,SERVICES,EVENTS和其他一些日常使用图标。 我的脚本获得了大部分内容,但不是RUN.LNK。
答案 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)