我想要向一个本地用户账户没有访问权限的文件写入内容,如何以管理员身份打开并写入文件?
您需要启动一个具有管理员权限的另一个进程。要做到这一点,请使用“runas”作为第二个参数调用ShellExecute(这将打开用户账户控制对话框)。该可执行文件可以是单独的,也可以是调用ShellExecute的同一个可执行文件。
我之前成功使用过的一个好的包装类,用于在using块中实现模拟:
using (new Impersonation(domain, username, password))
{
// <code that executes under different user context>
}
Using语句对于代码的可读性非常有帮助,就像这个例子中所示的那样,并确保当最后一个}字符被执行时(超出范围)使用的对象被正确处理。然而,显然没有垃圾回收的保证(请参见第一个答案)。这个stackoverflow解决方案具有良好的可读性和可用性。
这里是来自CodeProject的类似代码:一个用于模拟用户的小型C#类。