C#模拟技术

C#模拟技术,c#,C#,我想从IP地址为sj1slm612的远程机器上删除一个配置文件。现在的问题是我没有对远程机器的完全修改权限,所以我使用模拟技术来实现这一点。通常,当我通过putty连接到此远程机器时,我使用“sudo”。所以我的问题是下面的代码能解决我的问题吗?谢谢 我的代码: AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal); us

我想从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();

您的方法有两个问题:

  • 您正试图在本地计算机上模拟远程计算机帐户;这行不通。计算机帐户的凭据只能由该计算机验证。此外,该帐户在本地计算机上没有权限,因此冒充该帐户实际上没有意义。您需要模拟域帐户。当您使用putty之类的工具时,凭据会发送到远程计算机,而不会由本地计算机验证。这就是为什么您可以使用远程计算机的计算机帐户

  • 您需要为文件提供正确的路径。没有任何地方表明这些文件在远程计算机上。使用类似于
    “\\machine\c$\path\to\file”


  • 关于什么将起作用或不起作用的细节将取决于您的网络和操作系统,您没有指定这些,尽管听起来像是Linux。引用您需要使用的远程文件可能有不同的语法。

    否,当前我要尝试的远程计算机已关闭,但我需要它在此远程计算机上执行一些必要的操作。您的意思是。。。使用类似“\\machine\c$\path\to\file”的命令?在机器前有两个反斜杠?是的,这就是我输入的。所以我把它弄坏了。我想这是打字错误之类的@bmm6o:我理解你的答案,对于第2点,我更正了我的路径,我的代码能够命中该路径,但是我无法模拟远程用户,我不确定在我的代码中要做什么。然而,这件事是通过putty:sudo-S-uwtsnqa rm/path of file/…实现的。我对答案进行了一些扩展,但问题不在于您的代码,而在于您的方法。您不能使用计算机帐户来执行此操作,也不能使用域帐户或使用远程计算机上的服务(就像putty那样)。