2

我想从 IP 为:sj1slm612 的远程机器上删除一个配置文件。现在的问题是我没有对该远程机器的完全修改权限,所以我使用模拟技术来做到这一点。通常,当我通过 putty 连接到这台远程机器时,我使用“sudo”。所以我的问题是下面的代码能解决我的问题吗?谢谢。

我的代码:

AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal);
            using (WindowsIdentity Authorized_user = new WindowsIdentity("sj1slm612\\wtsnqa", "password"))
            {
                using (WindowsImpersonationContext context = Authorized_user.Impersonate())
                {
                    File.Delete(@"/apps/instances/express_13000/configuration/standalone-full.xml");
                    File.Delete(@"/apps/instances/query_13100/configuration/standalone-full.xml");
                    File.Delete(@"/apps/instances/wppapi_13200/configuration/standalone-full.xml");
                    File.Delete(@"/apps/instances/wppgui_13300/configuration/standalone-full.xml");

                    Console.WriteLine("All config files removed from sj1slm612");
                    Console.ReadLine();
4

1 回答 1

2

您的方法有两个问题:

  1. 您试图在本地机器上模拟远程机器帐户;这行不通。机器帐户的凭据只能由该机器验证。此外,该帐户在本地计算机上没有任何权限,因此模拟它并没有任何意义。您需要模拟域帐户。当您使用 putty 之类的工具时,凭据会发送到远程计算机,而不是由本地计算机验证。这就是您可以使用远程机器的机器帐户的原因。

  2. 您需要为文件提供正确的路径。您没有在任何地方指出这些文件在远程机器上。使用类似的东西"\\machine\c$\path\to\file"

什么会起作用的细节取决于你的网络和操作系统,虽然这听起来像是 Linux 的,但你没有指定。引用您需要使用的远程文件可能有不同的语法。

于 2013-08-19T16:12:09.667 回答