2013-08-19 53 views
2

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

我的代码:

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(); 
+2

你试过了吗? –

+0

不,目前我想尝试的远程机器当前已关闭,但我需要它在此远程机器上执行一些必要的操作。 –

回答

2

有2个问题,你的方法:

  1. 您试图冒充本地机器上的远程计算机帐户;这是行不通的。机器帐户的凭证只能由该机器验证。另外,该帐户对本地计算机没有任何权限,因此假冒它没有任何意义。您需要模拟一个域帐户。当您使用像putty这样的工具时,证书将被发送到远程机器,并且不会被本地机器验证。这就是您可以使用远程计算机的计算机帐户的原因。

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

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

+0

您的意思是...使用“\\ machine \ c $ \ path \ to \ file”之类的东西?机器前有两个反斜杠? –

+0

是的,那实际上就是我输入的内容。 SO打破了它。 – bmm6o

+0

我想这是一个错字或类似的东西。 :) –