C# 使用管理员用户登录到某些域,并使用C将文件复制到客户端计算机

C# 使用管理员用户登录到某些域,并使用C将文件复制到客户端计算机,c#,file-io,permissions,copy,dns,C#,File Io,Permissions,Copy,Dns,我有一个项目可以将文件复制到我域中另一个客户端的桌面上。有300多台客户端计算机。但有一个问题。当我在我域中的非管理员用户帐户中运行此项目时。它无法复制文件,因为访问被拒绝、用户限制出错。我想这样做这个程序,当用户开始复制文件时,在非管理员用户帐户中; 首先,我的程序将通过登录我的管理员用户帐户获得管理员访问权限,然后复制文件。然后注销。我如何才能做到这一点?我想用C实现这一点。您需要将线程更改为管理员用户的上下文。如何以安全的方式做到这一点是一个挑战。不过,这听起来像是一个快速实用程序,其中的

我有一个项目可以将文件复制到我域中另一个客户端的桌面上。有300多台客户端计算机。但有一个问题。当我在我域中的非管理员用户帐户中运行此项目时。它无法复制文件,因为访问被拒绝、用户限制出错。我想这样做这个程序,当用户开始复制文件时,在非管理员用户帐户中;
首先,我的程序将通过登录我的管理员用户帐户获得管理员访问权限,然后复制文件。然后注销。我如何才能做到这一点?我想用C实现这一点。

您需要将线程更改为管理员用户的上下文。如何以安全的方式做到这一点是一个挑战。不过,这听起来像是一个快速实用程序,其中的安全性可能不是什么大问题。只要在实用程序运行后更改管理员密码。

您需要将线程更改为管理员用户的上下文。如何以安全的方式做到这一点是一个挑战。不过,这听起来像是一个快速实用程序,其中的安全性可能不是什么大问题。只要在实用程序运行后更改管理员密码。

您可以在从自身或其他程序启动程序时切换权限。您可以使用两个程序来实现这一点,一个作为用户帐户运行,然后启动您的特权应用程序。或者使用不同的命令行自行启动,以指示不同的运行模式

要以不同的用户身份启动C中的程序,请执行以下操作:

// Create a secure version of the password
SecureString pass = new SecureString();
foreach ( char c in _pass.Text )
{
   pass.AppendChar( c );
}

Process process = Process.Start( "PrivilegedProgram.exe", _arguments, _user.Text, pass, _domain.Text );

从自身或其他程序启动程序时,可以切换权限。您可以使用两个程序来实现这一点,一个作为用户帐户运行,然后启动您的特权应用程序。或者使用不同的命令行自行启动,以指示不同的运行模式

要以不同的用户身份启动C中的程序,请执行以下操作:

// Create a secure version of the password
SecureString pass = new SecureString();
foreach ( char c in _pass.Text )
{
   pass.AppendChar( c );
}

Process process = Process.Start( "PrivilegedProgram.exe", _arguments, _user.Text, pass, _domain.Text );

我遇到了一个类似的问题:生产部门需要运行我的一个程序,该程序处理网络上没有任何访问权限的位置上的文件

我最终使用了模拟,它允许我在程序运行时设置的一组凭据下运行文件处理线程

在AD中,我创建了一个特殊的用户帐户,该帐户具有此程序独占使用的所有必需权限

我知道它一点也不安全,但它是有效的,甚至有人入侵我的程序以获取这些凭据的可能性是微乎其微的

总之,我发现这些资源非常有用:


-Jay

我遇到了一个类似的问题:生产部门需要运行我的一个程序,该程序在网络上的某个位置处理文件,而这些位置他们没有任何访问权限

我最终使用了模拟,它允许我在程序运行时设置的一组凭据下运行文件处理线程

在AD中,我创建了一个特殊的用户帐户,该帐户具有此程序独占使用的所有必需权限

我知道它一点也不安全,但它是有效的,甚至有人入侵我的程序以获取这些凭据的可能性是微乎其微的

总之,我发现这些资源非常有用:


-Jay

这是不准确的,您可以使用模拟来切换正在运行的程序的权限。另外,我要严正警告不要在带有管理员密码的程序中放入任何常量,即使没有源代码,它也很容易被反向工程。因为我们在同一个程序中使用模拟,我们允许您从上面的代码中切换用户。这是不准确的,您可以使用模拟来切换正在运行的程序的权限。另外,我要严正警告不要在带有管理员密码的程序中放入任何常量,即使没有源代码,它也很容易被反向工程。因为我们在同一个程序中使用模拟,我们允许您从上面的代码切换用户,我应该记得。