1

* .tlbファイルをC#にリモート登録するために使用しているC#コードがあります。次のコマンドでPsExec(Powershell)を使用して展開しています。

.\PsExec.exe \\* -u "username" -p "password" -h -c "MyExe.exe"

x86マシンでは正常に動作しますが、x64マシンではフォールオーバーし、次のエラーが発生します-2146232576

* .exeを64ビットマシンでローカルに実行すると、正常に動作します。コードは以下のとおりです。

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");
    }
}
4

1 に答える 1

3

発生するエラーは1792=ERROR_NETLOGON_NOT_STARTED = "ログオンしようとしましたが、ネットワークログオンサービスが開始されませんでした。"

Mark Russinovichによるこの記事では、PsExecのセキュリティ面について説明しています。

-iオプションを指定してこれを実行してみてください。

于 2012-04-11T10:50:44.567 に答える