PsExec 无法在 64 位计算机上运行

PsExec 无法在 64 位计算机上运行

当使用带有 PsExec 的 -c 标志将 .exe 复制到 64 位 Windows 计算机时,执行时出现错误,PsExec 就停在那里。

还有其他人遇到过这种情况吗?

答案1

此主题与 social.msdn 相关吗?

发帖者在某些 64 位机器上使用 PsExec 时遇到问题,但收到“...设备无法正常工作...”消息。然而,他在自己的回复中表示:

经过更多测试后,我注意到该问题仅发生在 WES 7 64 位上。
任何零售版本 32 位或 64 位以及 WES 7 32 位都可以正常工作。
然后我想起了以下更新:
KB982199是针对 64 位系统的更新,它修复了以下问题:当禁用重定向时,Windows Embedded Standard 7 64 位运行时上的 32 位应用程序的 CreateProcess 会失败。
安装此更新后,问题得到解决。

答案2

const 字符串子键 = “Software\Sysinternals\PsExec”;

        if (Environment.Is64BitOperatingSystem)
        {
            // For 64 Bit PC
            RegistryKey registryKey64 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64);
            RegistryKey NDPKey64 = registryKey64.OpenSubKey(subkey);
            if (NDPKey64 != null)
            {
                Registry.CurrentUser.OpenSubKey(subkey, true).SetValue("EulaAccepted", 1, RegistryValueKind.DWord);
            }
            else
            {
                RegistryKey regKey64 = registryKey64.OpenSubKey("Software", true);
                regKey64.CreateSubKey("Sysinternals\\PsExec", RegistryKeyPermissionCheck.ReadWriteSubTree);
                Registry.CurrentUser.OpenSubKey(subkey, true).SetValue("EulaAccepted", 1, RegistryValueKind.DWord);
            }
        }
        else
        {
            //For 32 bit PC
            RegistryKey registryKey32 = Registry.CurrentUser.OpenSubKey(subkey);
            if (registryKey32 != null)
            {
                Registry.CurrentUser.OpenSubKey(subkey, true).SetValue("EulaAccepted", 1, RegistryValueKind.DWord);
            }
            else
            {
                RegistryKey regKey32 = Registry.CurrentUser.OpenSubKey("Software", true);
                regKey32.CreateSubKey("Sysinternals\\PsExec", RegistryKeyPermissionCheck.ReadWriteSubTree);
                Registry.CurrentUser.OpenSubKey(subkey, true).SetValue("EulaAccepted", 1, RegistryValueKind.DWord);
            }
        }

相关内容