1

我有一个项目可以将文件复制到我域中另一个客户端的桌面。有 300 多台客户端计算机。但是有一个问题。当我在域中的非管理员用户帐户中运行此项目时。它无法复制文件关于访问被拒绝,用户限制的错误。当用户开始复制文件时,我想在非管理员用户帐户中执行这样的程序;首先,我的程序将通过在我的管理员用户帐户中登录到域来获得管理员访问权限,而不是复制文件。然后注销。我该怎么做?我想用 C# 做到这一点。

4

3 回答 3

4

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

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

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

我知道它根本不安全,但它确实有效,甚至有人破解我的程序以获取这些凭据的可能性很小。

无论如何,看看Impersonation我发现这些资源很有帮助:

安全地冒充另一个用户

Brian Low 的 ImpersonationHelper 类

-杰伊

于 2009-02-04T22:04:40.547 回答
3

从程序本身或从另一个程序启动程序时,您可以切换权限。您可以使用两个程序来执行此操作,一个作为用户帐户运行,然后启动您的特权应用程序。(或使用不同的命令行启动自身以指示不同的运行模式。)

要以其他用户身份在 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 );
于 2009-02-04T21:44:41.427 回答
0

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

于 2009-02-04T21:42:35.630 回答