【发布时间】:2016-12-21 22:22:00
【问题描述】:
我使用 C# 和 Powershell 创建快捷方式,但是在代码中创建它们时它们不起作用。我单击快捷方式,光标显示 PC 正在思考一秒钟,然后没有任何反应。这是我使用的 Powershell 代码:
$currPath = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition
$tgtPath = ($currPath + "\bin\MyApp.exe")
$scutPath = ([Environment]::GetFolderPath("Desktop") + "\MyApp.lnk")
$wShell = New-Object -ComObject WScript.Shell
$scut = $wShell.CreateShortcut($scutPath)
$scut.TargetPath = $tgtPath
$scut.Save()
C# 代码使用 IWshRuntimeLibrary 的想法基本相同。这个小脚本基本上只是在某人下载我的小独立可执行文件后在他们的桌面上创建一个快捷方式。我可以手动创建快捷方式,一切正常。为什么我不能通过代码来实现?
在测试过程中,我在桌面上创建了一些同名的快捷方式和 .url 文件,我不确定这是否重要。
【问题讨论】:
-
右键单击以编程方式制作的快捷方式,然后将“目标”和“开始”字段与您手动制作的有效字段进行比较。
-
尝试上述链接中提供的解决方案。 (请记住关于
WshShell与WshShellClass的.NET 4.0 参考的注释。解决方案适用于c#。 -
@Quantic - 完全正确。我之前确实仔细比较了属性,但我忽略了现场的开始。把这个作为答案,我可以接受。需要设置的属性是快捷方式对象的WorkingDirectory。
标签: c# windows powershell shortcuts