Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 我的命令行程序在cmdshell上找不到其配置目录,但在PowerShell上找到了_Windows_Shell_Powershell_Path - Fatal编程技术网

Windows 我的命令行程序在cmdshell上找不到其配置目录,但在PowerShell上找到了

Windows 我的命令行程序在cmdshell上找不到其配置目录,但在PowerShell上找到了,windows,shell,powershell,path,Windows,Shell,Powershell,Path,我在脚本中使用了一个命令行程序,它在cmdshell上找不到它的config目录,但在PowerShell上找到了它 即使这个问题似乎与某些特定程序的行为(一个名为OCLHashCat的命令行哈希分析器工具)相对应,我认为这主要是Windows shell行为和/或所涉及的变量的问题。让我解释一下 这是命令行程序的目录(OCLHashCat)的内容: 但是如果我尝试运行,它无法找到它自己的一些文件/目录: C:\Temporal>oclhashcat64 Test.hccap -m 250

我在脚本中使用了一个命令行程序,它在cmdshell上找不到它的config目录,但在PowerShell上找到了它

即使这个问题似乎与某些特定程序的行为(一个名为
OCLHashCat
的命令行哈希分析器工具)相对应,我认为这主要是Windows shell行为和/或所涉及的变量的问题。让我解释一下

这是命令行程序的目录(
OCLHashCat
)的内容:

但是如果我尝试运行,它无法找到它自己的一些文件/目录:

C:\Temporal>oclhashcat64 Test.hccap -m 2500 -a 3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...

Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU

Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel ./kernels/4098/m02500.Bonaire_1573.4_1573.4 (VM).kernel not fo
und in cache! Building may take a while...

ERROR: ./kernels/4098/m02500.VLIW1.llvmir: No such file or directory
注意最后一个错误:它找不到文件,但我已经检查了这样的文件是否存在

C:\Temporal>dir d:\Programas\HashCat\OCLHashCat\kernels\4098\m02500.VLIW1.llvmir

 El volumen de la unidad D es Datos
 El número de serie del volumen es: 57E9-ACA0

 Directorio de d:\Programas\HashCat\OCLHashCat\kernels\4098

02/10/2014  12:11 pm           326.912 m02500.VLIW1.llvmir
               1 archivos        326.912 bytes
如果我将CHDir插入程序目录:

d:\Programas\HashCat\OCLHashCat>oclhashcat64 -m 2500 "c:\Temporal\Test.hccap" -a
 3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...

Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU

Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel ./kernels/4098/m02500.Bonaire_1573.4_1573.4 (VM).kernel (25932
0 bytes)
Device #1: Kernel ./kernels/4098/markov_le_v1.Bonaire_1573.4_1573.4 (VM).kernel
(92404 bytes)
Device #1: Kernel ./kernels/4098/bzero.Bonaire_1573.4_1573.4 (VM).kernel (30496
bytes)
Device #2: Kernel ./kernels/4098/m02500.Tahiti_1573.4_1573.4 (VM).kernel (259428
 bytes)
Device #2: Kernel ./kernels/4098/markov_le_v1.Tahiti_1573.4_1573.4 (VM).kernel (
92388 bytes)
Device #2: Kernel ./kernels/4098/bzero.Tahiti_1573.4_1573.4 (VM).kernel (30492 b
ytes)

[s]tatus [p]ause [r]esume [b]ypass [q]uit =>
那就是:一切都像一个符咒

在Powershell中,无论我从何处调用程序,一切都可以完美运行。例如:

PS C:\Temporal> oclHashcat64.exe Test.hccap -m 2500 -a 3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...

Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU

Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/m02500.Bonaire_1573.4_1573.4 (VM).kernel (259320 bytes)
Device #1: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/markov_le_v1.Bonaire_1573.4_1573.4 (VM).kernel (92404 bytes)
Device #1: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/bzero.Bonaire_1573.4_1573.4 (VM).kernel (30496 bytes)
Device #2: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/m02500.Tahiti_1573.4_1573.4 (VM).kernel (259428 bytes)
Device #2: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/markov_le_v1.Tahiti_1573.4_1573.4 (VM).kernel (92388 bytes)
Device #2: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/bzero.Tahiti_1573.4_1573.4 (VM).kernel (30492 bytes)

[s]tatus [p]ause [r]esume [b]ypass [q]uit =>
,但是有一些原因使我需要经典的cmdshell,比如与CygWin一起使用(这应该允许我使用GNU屏幕,但这是另一回事)

我认为问题来自于
/kernels…
引用,这使得命令行程序(
OCLHashCat
)尝试在运行路径中搜索目录,而不是在源路径(程序的路径树)中搜索

谁能给我一些想法试试吗

额外信息:该程序有Linux和Windows版本,因此可能存在编译/编程问题或类似问题

额外信息2:这个程序在去年已经更改了4-5次版本,我一直有这个问题

请求下的额外信息:

PS C:\Temporal> get-command oclHashcat64.exe | fl *

HelpUri         :
FileVersionInfo : File:             d:\Programas\HashCat\OCLHashCat\oclHashcat6
                  4.exe
                  InternalName:
                  OriginalFilename:
                  FileVersion:
                  FileDescription:
                  Product:
                  ProductVersion:
                  Debug:            False
                  Patched:          False
                  PreRelease:       False
                  PrivateBuild:     False
                  SpecialBuild:     False
                  Language:

Path            : d:\Programas\HashCat\OCLHashCat\oclHashcat64.exe
Extension       : .exe
Definition      : d:\Programas\HashCat\OCLHashCat\oclHashcat64.exe
Visibility      : Public
OutputType      : {System.String}
Name            : oclHashcat64.exe
CommandType     : Application
ModuleName      :
Module          :
Parameters      :
ParameterSets   :
C:\Temporal>oclhashcat64 "c:\Temporal\Test.hccap" -m 2500 -a 3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...

Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU

Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel ./kernels/4098/m02500.Bonaire_1573.4_1573.4 (VM).kernel not fo
und in cache! Building may take a while...

ERROR: ./kernels/4098/m02500.VLIW1.llvmir: No such file or directory
因此,PowerShell中的路径似乎是正确的

关于SSH的额外信息:通过在我的计算机(运行Bitvise SSH服务器的Windows 7 SP1)中进行SSHing,行为完全相同。它不适用于标准外壳:

login as: Luis-
Luis-@Windu-'s password:
Microsoft Windows [Versión 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.

C:\Users\Luis->cd \Temporal

C:\Temporal>oclhashcat64 Test.hccap -m 2500 -a 3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...

WARN: ADL_Overdrive6_FanSpeed_Get(): -5

Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU

Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel ./kernels/4098/m02500.Bonaire_1573.4_1573.4 (VM).kernel not found
 in cache! Building may take a while...

ERROR: ./kernels/4098/m02500.VLIW1.llvmir: No such file or directory
对于powershell来说:

login as: Luis-
Luis-@Windu-'s password:
Microsoft Windows [Versión 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.

C:\Users\Luis->powershell
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. Reservados todos los derechos.

PS C:\Users\Luis-> cd \
PS C:\> cd .\Temporal
PS C:\Temporal> oclHashcat64.exe Test.hccap -m 2500 -a 3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...

WARN: ADL_Overdrive6_FanSpeed_Get(): -5

Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU

Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/m02500.Bonaire_1573.
4_1573.4 (VM).kernel (259320 bytes)
Device #1: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/markov_le_v1.Bonaire
_1573.4_1573.4 (VM).kernel (92404 bytes)
Device #1: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/bzero.Bonaire_1573.4
_1573.4 (VM).kernel (30496 bytes)
Device #2: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/m02500.Tahiti_1573.4
_1573.4 (VM).kernel (259428 bytes)
Device #2: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/markov_le_v1.Tahiti_
1573.4_1573.4 (VM).kernel (92388 bytes)
Device #2: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/bzero.Tahiti_1573.4_
1573.4 (VM).kernel (30492 bytes)

[s]tatus [p]ause [r]esume [b]ypass [q]uit =>
根据要求提供额外信息:

PS C:\Temporal> get-command oclHashcat64.exe | fl *

HelpUri         :
FileVersionInfo : File:             d:\Programas\HashCat\OCLHashCat\oclHashcat6
                  4.exe
                  InternalName:
                  OriginalFilename:
                  FileVersion:
                  FileDescription:
                  Product:
                  ProductVersion:
                  Debug:            False
                  Patched:          False
                  PreRelease:       False
                  PrivateBuild:     False
                  SpecialBuild:     False
                  Language:

Path            : d:\Programas\HashCat\OCLHashCat\oclHashcat64.exe
Extension       : .exe
Definition      : d:\Programas\HashCat\OCLHashCat\oclHashcat64.exe
Visibility      : Public
OutputType      : {System.String}
Name            : oclHashcat64.exe
CommandType     : Application
ModuleName      :
Module          :
Parameters      :
ParameterSets   :
C:\Temporal>oclhashcat64 "c:\Temporal\Test.hccap" -m 2500 -a 3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...

Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU

Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel ./kernels/4098/m02500.Bonaire_1573.4_1573.4 (VM).kernel not fo
und in cache! Building may take a while...

ERROR: ./kernels/4098/m02500.VLIW1.llvmir: No such file or directory
关于在CygWin上运行的其他信息:

Luis@Windu /cygdrive/c/Temporal
$ oclhashcat64 Test.hccap -m 2500 -a 3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...

Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU

Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel D:\Programas\HashCat\OCLHashCat/kernels/4098/m02500.Bonaire_1573.4_1573.4 (VM).kernel (259320 bytes)
Device #1: Kernel D:\Programas\HashCat\OCLHashCat/kernels/4098/markov_le_v1.Bonaire_1573.4_1573.4 (VM).kernel (92404 bytes)
Device #1: Kernel D:\Programas\HashCat\OCLHashCat/kernels/4098/bzero.Bonaire_1573.4_1573.4 (VM).kernel (30496 bytes)
Device #2: Kernel D:\Programas\HashCat\OCLHashCat/kernels/4098/m02500.Tahiti_1573.4_1573.4 (VM).kernel (259428 bytes)
Device #2: Kernel D:\Programas\HashCat\OCLHashCat/kernels/4098/markov_le_v1.Tahiti_1573.4_1573.4 (VM).kernel (92388 bytes)
Device #2: Kernel D:\Programas\HashCat\OCLHashCat/kernels/4098/bzero.Tahiti_1573.4_1573.4 (VM).kernel (30492 bytes)

[s]tatus [p]ause [r]esume [b]ypass [q]uit =>
所以我们可以说程序在CygWin下运行正常。因为它最初可能是为Linux编程的


也许我至少可以把它用作某种解决方法。

这个程序显然是从命令行找到它的归宿,而不是调用
GetModuleFileName
。与cmd不同,PowerShell不使用的
lpApplicationName
参数。相反,它修改命令行以使用完整路径。例如,它将
“oclHashcat64.exe”
替换为
“d:\Programas\HashCat\OCLHashCat\oclHashcat64.exe”
。在cmd中,您必须实际键入完整路径

作为一种解决方法,您可以使用console API为cmd.exe创建新的应用程序。旧的doskey程序为该API提供了一个命令行接口。这样,当您在控制台中键入
oclHashcat64
时,cmd.exe将读取别名中设置的完整路径:

doskey /exename=cmd.exe oclHashcat64="D:\Programas\HashCat\OCLHashCat\oclHashcat64.exe" $* 
您可以使用
doskey/macros:all>alias
将别名(即宏)保存到文件中。然后使用
doskey/macrofile=alias
加载它们。您还可以在
HKCU\Software\Microsoft\command Processor\AutoRun
中添加命令,以便在cmd.exe启动时加载别名


另一个选项是在
路径
上的某个目录中创建Windows快捷方式(即shell32链接文件)。在命令行中使用可执行文件的完整路径,并将start in目录保留为空(即继承shell的工作目录)。将
.LNK
附加到
PATHEXT
环境变量,以避免必须键入.LNK扩展名。(我发现链接文件比使用批处理文件作为美化的快捷方式更方便。此外,它们不像批处理文件那样安装Ctrl-C处理程序,这一点让我不那么恼火。)

展示如何在powershell中对其进行命名,以便进行比较,@AndyArismendi。恐怕没什么不同。在Powershell中,我看到它使用的是设备行上的完整路径,而不是cmd尝试相对的路径。这就是cmd shell的工作方式。运行应用程序/命令时,当前目录将设置为shell的当前位置。它未设置为应用程序的位置。实际上,我很惊讶它能在PowerShell中工作。@mikez,这种行为自去年以来一直保持不变,即使程序员已经发布了好几次新版本。我已将其添加到我的帖子中。