c# - 为什么此代码不能在基于x64的Windows计算机上远程运行

标签 c# powershell remote-debugging

我有一段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)撰写的这份article讨论了PsExec的安全性方面。

尝试使用-i选项运行它。

关于c# - 为什么此代码不能在基于x64的Windows计算机上远程运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10102755/

相关文章:

c# - EditText 上的 Xamarin SetError 验证

c# - 遍历从方法返回的列表,直到该方法没有给我任何记录

powershell - 错误: "Select-AzureSubscription Must specify a non-null subscription name"

java - 如何调试 Tycho 运行的测试用例?

java - JMX : cant connect from Windows box to monitor JMX port on a Linux system

visual-studio - Visual Studio 远程调试可扩展性

c# - Quartz.NET scheduler.Interrupt(jobKey) 正在中断所有事件作业

java - 将位图转换为圆形位图的最佳方法是什么

windows - 如何在 PowerShell 上安装 git(在 PowerShell 上使用 bash)?

powershell - 交换 powershell : get-user has no Description property?