1
C#でリモートから* .tlbファイルを登録するために使用しているC#コードがあります。x64ベースのWindowsマシンでリモートでこのコードを実行しない
.\PsExec.exe \\* -u "username" -p "password" -h -c "MyExe.exe"
それは、x86マシン上の細かい動作しますが、次のエラーでのx64マシン上で倒れた:-2146232576
私は、次のコマンドを使用してPsExecは(PowerShellを)使用して、それを展開しています。
* 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");
}
}