PsExecで-cフラグを使用して.exeを64ビットWindowsコンピューターにコピーすると、実行中にエラーが発生し、PsExecはそこで停止します。
他にこれを経験している人はいますか?
このスレッド social.msdnに関連していますか?
ポスターは、一部の64ビットマシンでPsExecに問題が発生していましたが、「...デバイスが機能していません...」というメッセージが表示されていました。しかし、彼自身の返答の中で彼は次のように述べています。
さらにテストを行った後、問題がWES 764ビットでのみ発生していることに気付きました。
小売バージョンの32ビットまたは64ビットとWES732ビットは問題なく動作します。
それから私は次の更新を思い出しました:
KB982199は、次の問題を修正する64ビットシステムのアップデートです。WindowsEmbeddedStandard764上の32ビットアプリケーションでCreateProcessが失敗する-リダイレクトが無効になっている場合のビットランタイム
このアップデートをインストールした後、問題は解決しました。
const string subkey = "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);
}
}