首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的命令行程序在CMD shell上找不到它的配置目录,但是在PowerShell上找到它的配置目录。

我的命令行程序在CMD shell上找不到它的配置目录,但是在PowerShell上找到它的配置目录。
EN

Stack Overflow用户
提问于 2014-11-15 23:22:31
回答 1查看 1.3K关注 0票数 1

我在脚本中使用了一个命令行程序,它在上找不到它的配置目录,而是在PowerShell上找到它的配置目录。

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

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

代码语言:javascript
复制
d:\Programas\HashCat\OCLHashCat>dir
 El volumen de la unidad D es Datos
 El número de serie del volumen es: 57E9-ACA0

 Directorio de d:\Programas\HashCat\OCLHashCat

07/10/2014  09:28 am    <DIR>          .
07/10/2014  09:28 am    <DIR>          ..
06/10/2014  11:56 pm    <DIR>          charsets
06/10/2014  11:56 pm    <DIR>          docs
06/10/2014  11:57 pm                 4 eula.accepted
02/10/2014  12:11 pm         1.210.228 example.dict
02/10/2014  12:11 pm           220.796 example0.hash
02/10/2014  12:11 pm                36 example400.hash
02/10/2014  12:11 pm                36 example500.hash
06/10/2014  11:56 pm    <DIR>          extra
02/10/2014  12:11 pm        33.685.504 hashcat.hcstat
06/10/2014  11:56 pm    <DIR>          kernels
06/10/2014  11:56 pm    <DIR>          masks
02/10/2014  12:11 pm                72 oclExample0.cmd
02/10/2014  12:11 pm                66 oclExample0.sh
02/10/2014  12:11 pm                68 oclExample400.cmd
02/10/2014  12:11 pm                61 oclExample400.sh
02/10/2014  12:11 pm                61 oclExample500.cmd
02/10/2014  12:11 pm                55 oclExample500.sh
15/11/2014  11:46 pm               128 oclHashcat.dictstat
07/10/2014  02:52 am            11.448 oclHashcat.log
07/10/2014  02:52 am    <DIR>          oclHashcat.outfiles
07/10/2014  02:03 am                 0 oclHashcat.pot
07/10/2014  09:28 am               400 oclHashcat.restore
02/10/2014  12:11 pm           388.744 oclHashcat32.bin
02/10/2014  12:11 pm           419.840 oclHashcat32.exe
02/10/2014  12:11 pm           383.136 oclHashcat64.bin
02/10/2014  12:11 pm           432.128 oclHashcat64.exe
06/10/2014  11:56 pm    <DIR>          rules

如您所见,目录kernels就在那里。

OCLHashCat的家就在我的路上:

代码语言:javascript
复制
C:\>oclhashcat64
oclHashcat v1.31 starting...

Usage: oclhashcat64 [options]... hash|hashfile|hccapfile [dictionary|mask|direct
ory]...

Try --help for more help.

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

代码语言:javascript
复制
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

注意最后一个错误:它找不到一个文件,但是我检查了这样的文件是否存在。

代码语言:javascript
复制
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到程序的目录中:

代码语言:javascript
复制
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中,无论我从哪里调用程序,一切都工作得很完美。示例:

代码语言:javascript
复制
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 =>

,但是有一些原因使我需要经典的CMD,比如与CygWin一起使用(这应该允许我使用GNU屏幕,但这是另一回事)。

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

有谁能给我点主意试试吗?

额外信息:程序OCLHashCat有Linux和Windows版本,所以可能是一些编译/编程问题或类似的问题。

额外信息2:在过去的一年里,这个程序已经修改了4到5次版本,而且我一直有这个问题。

请求项下的额外信息:

代码语言:javascript
复制
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   :

因此,PowerShell中的路径似乎是正确的。

关于SSH的额外信息:通过SSHing进入我的计算机(运行的Windows7 SP1 ),行为完全相同。它不适用于标准shell:

代码语言:javascript
复制
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是这样的:

代码语言:javascript
复制
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 =>

请求时提供的额外信息:

代码语言:javascript
复制
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上运行的额外信息:

代码语言:javascript
复制
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编写的?

也许我可以用这个作为某种解决办法。

EN

回答 1

Stack Overflow用户

发布于 2014-11-16 12:50:44

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

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

代码语言:javascript
复制
doskey /exename=cmd.exe oclHashcat64="D:\Programas\HashCat\OCLHashCat\oclHashcat64.exe" $* 

可以使用doskey /macros:all > aliases将别名(即宏)保存到文件中。然后使用doskey /macrofile=aliases加载它们。您还可以在HKCU\Software\Microsoft\Command Processor\AutoRun中添加一个命令,以便在cmd.exe启动时加载别名。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26951946

复制
相关文章

相似问题

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