2

尝试按照教程步骤并反汇编可执行的 c# 文件,但是每当我在命令提示符下键入 ildasm 时,它都会显示在开发人员 powershell 中无法识别。当我对 dll 文件执行此操作时也显示相同的消息。请帮忙。

错误信息在这里

4

1 回答 1

3

该错误消息暗示ildasm.exe' 目录不在$env:PATH环境变量中存储的目录列表中,因此您不能仅按名称调用它。

要从 PowerShell 通过其路径调用它,还有一个额外的语法要求:通过需要引用的路径调用可执行文件- 例如在您的情况下,假设路径包含空格- 需要调用 via &调用运算符

# Add arguments as needed.
& 'C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\ildasm.exe'

要将的目录添加ildasm.exe到您的$env:PATH变量中,请运行以下命令:

$env:PATH += ';C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools'

仅对当前会话的剩余时间有效。

如果您希望它在未来的PowerShell会话中默认生效,请运行以下一次,然后启动一个新会话。该命令将$env:PATH-extending 命令添加到您的 PowerShell配置文件$PROFILE,该文件会在会话开始时自动加载:

if (-not (Test-Path $PROFILE)) { New-Item -Force $PROFILE }
Add-Content $PROFILE -Value '$env:PATH += ";C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools"'

如果您希望更改在系统范围内(在未来的会话中)生效,您需要更新PATH存储在注册表中的环境变量的持久定义;运行以下一次,然后启动一个新的 PowerShell 会话。

[Environment]::SetEnvironmentVariable(
  'Path',
  (
    [Environment]::GetEnvironmentVariable('Path', 'User') + 
    ';C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools'
  ),
  'User'
)

上面修改了当前用户的持久PATH环境变量。要修改所有用户的定义,请将两个实例替换为,但请注意,您必须随后从提升的会话运行命令(以管理员身份运行)。'User''Machine'

于 2021-08-28T18:15:38.830 回答