如何在Windows中添加我的撰写多平台应用程序到SendTo菜单?



我有一个使用Compose Multiplatform创建的跨平台应用程序。我需要将其添加到SendTo菜单(此菜单在Windows资源管理器中可用,当用户右键单击文件时)。

我试着找到任何选项来实现它使用Gradle。但是在nativedistribution/windows中没有特殊的选项。

我还尝试在main()函数的应用程序启动中使用下面的代码实现它:

val appPath = Paths.get("C:/Program Files/MyApp/MyApp.exe")
val sendToDir = Paths.get(System.getenv("APPDATA"), "Microsoft", "Windows", "SendTo")
val shortcutPath = sendToDir.resolve("MyApp.lnk")
Files.createLink(shortcutPath, appPath)

不工作,抛出异常:

java.nio.file.AccessDeniedException: C:UsersMeAppDataRoamingMicrosoftWindowsSendToMyApp.lnk -> C:Program FilesMyAppMyApp.exe
at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
at java.base/sun.nio.fs.WindowsFileSystemProvider.createLink(WindowsFileSystemProvider.java:622)
at java.base/java.nio.file.Files.createLink(Files.java:1112)

如何在Windows SendTo目录中创建快捷方式使用Compose Multiplatform?

带有sendTo链接的Windows文件夹不受管理员权限保护:

%APPDATA%MicrosoftWindowsSendTo

在这里创建一个链接到你想要运行的应用程序。

<标题>

编辑1尝试创建一个. link文件。它有一个二进制格式,所以像mslinks这样的java库应该可以帮助您以编程方式完成此任务:

https://github.com/DmitriiShamrikov/mslinks

文档显示Files.createLink创建硬链接,这可能是一个问题,因为Program Files是一个受管理员权限保护的文件夹。<标题>EDIT2 h1> 这些行写一个。vbs文件,并调用shell从你的应用程序中运行它。它将使用本地Windows组件(VBScript)创建。link文件:

Set WshShell = CreateObject("WScript.Shell")
Set oShellLink = WshShell.CreateShortcut(WshShell.ExpandEnvironmentStrings("%APPDATA%") & "MicrosoftWindowsSendToMyApp.lnk")
oShellLink.TargetPath = "C:Program FilesMyAppMyApp.exe"
oShellLink.Save

脚本执行完成后,可以删除。vbs文件。

最新更新