为什么此代码无法在基于 x64 的 Windows 计算机上远程运行
本文关键字:计算机 程运行 运行 Windows 代码 x64 为什么 | 更新日期: 2023-09-27 18:30:55
我有一段C#代码,我用它来在C#中远程注册一个*.tlb文件。我正在使用PsExec(Powershell)和以下命令部署它:
.'PsExec.exe ''* -u "username" -p "password" -h -c "MyExe.exe"
它在 x86 计算机上工作正常,但在 x64 计算机上会失败并显示以下错误:-2146232576
。
如果我在 64 位机器上本地运行 *.exe,它工作正常。代码如下:
static void Main(string[] args)
{
try
{
Directory.CreateDirectory(@"C:'Directory");
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
try
{
File.Copy(@"''x.x.x.x'MyDll.dll", @"C:'Directory'MyDll.dll");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
try
{
var p = new Process
{
StartInfo =
{
FileName = @"C:'Windows'Microsoft.NET'Framework'v4.0.30319'RegAsm.exe",
Arguments = @"C:'Directory'MyDll.dll",
UseShellExecute = false
}
};
var q = new Process
{
StartInfo =
{
FileName = @"C:'Windows'Microsoft.NET'Framework'v4.0.30319'RegAsm.exe",
Arguments = @"C:'Directory'MyDll.dll /tlb",
UseShellExecute = false
}
};
var r = new Process
{
StartInfo =
{
FileName = @"C:'Windows'Microsoft.NET'Framework'v4.0.30319'RegAsm.exe",
Arguments = @"C:'Directory'MyDll.dll /codebase",
UseShellExecute = false
}
};
p.Start();
q.Start();
r.Start();
}
catch(Exception z)
{
Console.WriteLine(z.Message);
}
}
Console.WriteLine("Done and Done");
}
}
您得到的错误是 1792 = ERROR_NETLOGON_NOT_STARTED = "尝试登录,但网络登录服务未启动。
Mark Russinovich的这篇文章讨论了PsExec的安全方面。
尝试使用 -i 选项运行它。