【问题标题】:Copy files using windows credentials使用 Windows 凭据复制文件
【发布时间】:2016-05-10 06:37:42
【问题描述】:

我需要使用 Delphi 将一些文件复制到 Program files 文件夹。我知道如果该用户有权访问程序文件夹,它可以轻松地使用CopyFile() 功能。但是,如果该用户无权访问程序文件,我需要使用特定用户进行操作(某些功能可以传递用户和密码的参数并复制文件)。我怎样才能做到这一点?

【问题讨论】:

  • 这是错误的方法,因为它无法绕过 UAC。将 requireAdministrator 选项添加到清单中。
  • 如果您想操作“程序文件”中的文件/子文件夹,您必须将您的程序显示为“requireAdministrator”。反过来,这意味着只有拥有管理员凭据的用户才能运行您的程序。如果您希望标准用户使用您的程序,请停止操作“程序文件”,这样您就可以在清单中省略“requireAdministrator”。

标签: delphi


【解决方案1】:

据我所知,您必须启动具有提升权限的新流程。 因此,您应该创建第二个应用程序来执行复制并以提升的权限启动它,或者以提升的权限重新启动您自己的应用程序。

如何做到这一点在 stackoverflow 的许多地方都有说明,例如这里: use shell execute to run cmd as Admin.

【讨论】:

  • 假冒怎么样,这行得通吗? Ask the User for Credentials,然后是LogonUser()ImpersonateLoggedOnUser(),最后是CopyFile()
  • 我无法真正证明,但我怀疑应用程序是否可以在不重新启动(或启动具有提升权限的另一个进程)的情况下提升自己的权限。甚至像 Sysinternals Autoruns 工具这样的系统工具也是这样做的。而且 Sysinternals 是属于微软的,所以他们应该知道怎么做……
猜你喜欢
  • 2010-10-19
  • 2020-07-27
  • 2014-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多