首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为非exe文件夹向Windows资源管理器添加上下文菜单项

如何为非exe文件夹向Windows资源管理器添加上下文菜单项
EN

Stack Overflow用户
提问于 2018-07-27 16:49:00
回答 2查看 53关注 0票数 2

我成功地将一个项目添加到文件夹的上下文菜单(这是容易的部分),但我的程序是jar扩展当我尝试通过上下文菜单打开它时出现错误:此程序将不能在您的计算机或类似的东西上运行,所以我尝试在命令值中写入以下内容:

代码语言:javascript
复制
Java -jar path.jar "%1"

结果是一样的。我的解决方法是使用bat文件打开jar文件xD,但有两个问题:

  1. 每当
  2. 带有空格的路径不工作(程序被赋予null?)

时,会弹出一个令人不快的黑色命令窗口

怎么做才能摆脱这只蝙蝠?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-27 17:02:43

我认为,这更多的是Windows的问题,而不是java的问题,所以更通用的方法是:

不要试图直接运行你的java代码。相反:编写一个脚本(例如,使用被调用的PowerShell )。

在脚本中,您可以执行以下操作:

将windows机器上的java installation

  • checking/translating相对路径设置为“
  • searching”绝对值,然后
  • ,最后使用正确的参数调用一些java.exe
票数 0
EN

Stack Overflow用户

发布于 2018-07-29 04:25:29

下面是我的简单代码:

代码语言:javascript
复制
param (
[string]$p1
)
function Find-JavaExe {
[CmdletBinding()]
param ()

$JavaExeSuffix = 'bin\java.exe'

if ($env:JAVAHOME -eq $null) {
    Write-Debug "`$env:JAVAHOME doesn't exist, going to look elsewhere"
}
else {
    $JavaHomeBasedPath = Join-Path $env:JAVAHOME $JavaExeSuffix
    Write-Debug "Testing for $JavaHomeBasedPath, based on `$env:JAVAHOME"
    if (Test-Path $JavaHomeBasedPath) {
        Write-Debug "Found $JavaExePath"
        return $JavaExePath
    }
}

$RegistrySearchPaths = @('HKLM:\SOFTWARE\JavaSoft\Java Runtime Environment\', 'HKLM:\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment\')
$JavaExePath = $RegistrySearchPaths |
    where { Test-Path $_ } |
    % {
        $CurrentVersion = (Get-ItemProperty $_).CurrentVersion
        Write-Debug "Current Java version is $CurrentVersion, based on $($_)"
        $VersionKey = Join-Path $_ $CurrentVersion
        $JavaHomeBasedPath = Join-Path (Get-ItemProperty $VersionKey).JavaHome $JavaExeSuffix
        Write-Debug "Testing for $JavaHomeBasedPath, based on $VersionKey\JavaHome"
        if (Test-Path $JavaHomeBasedPath) { $JavaHomeBasedPath }
    } |
    select -First 1

if ($JavaExePath -ne $null) {
    Write-Debug "Found $JavaExePath"
    return $JavaExePath
}

}

$path_java = Find-JavaExe
$java_param =  " -jar "
$path_prog = 
$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath('.\')
$program_name = "\ResizeProgram.jar "
$command = $path_java + $java_param + $path_prog + $program_name + """$p1"""
iex $command

它运行良好,可以处理带空格的路径

但是当我从文件夹的comtextmenu运行它时,我有另一个问题,出现提示说:

  • 此程序将无法在您的计算机上运行;再次。

在regedit中,我写得很简单:

  • path.ps1 "%1"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51554256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档