Назад | Перейти на главную страницу

PsExec не работает на 64-битных компьютерах

При копировании .exe на 64-битный компьютер с Windows с использованием флага -c с PsExec возникает ошибка при его выполнении, PsExec просто останавливается там.

Кто-нибудь еще испытывает это?

Является эта тема на social.msdn актуально?

У плаката были проблемы с PsExec на некоторых 64-битных машинах, но получалось сообщение «... устройство не работает ...». Однако в своем ответе он заявляет:

После еще нескольких тестов я заметил, что проблема возникла только на WES 7 64 Bit.
Подойдет любая розничная 32- или 64-разрядная версия и 32-разрядная версия WES 7.
Тут я вспомнил следующее обновление:
KB982199 - это обновление для 64-битных систем, которое устраняет следующую проблему: CreateProcess не работает для 32-битных приложений в 64-битных средах выполнения Windows Embedded Standard 7, когда перенаправление отключено
После установки этого обновления проблема была решена.

const string subkey = "Программное обеспечение \ 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);
            }
        }