【发布时间】:2012-11-05 16:22:30
【问题描述】:
我正在尝试编写一个以另一个用户身份运行 Draytek VPN 客户端的应用程序,因为我不希望该用户拥有管理员密码并且他们的帐户是标准用户。但是,由于我尝试过的两种实现都存在错误,我无法让它工作。
这是我尝试过的一些示例代码:
System.Security.SecureString ss = new System.Security.SecureString();
foreach (var c in "password")
{
ss.AppendChar(c);
}
Process process = new Process();
process.StartInfo.UseShellExecute = true;
process.StartInfo.WorkingDirectory = "c:\\";
process.StartInfo.FileName = @"C:\Program Files (x86)\DrayTek\Smart VPN Client\SmartVPNClient.exe";
process.StartInfo.Verb = "runas";
process.StartInfo.UserName = "testUser";
process.StartInfo.Password = ss;
process.StartInfo.UseShellExecute = false;
process.Start();
我收到错误:请求的操作需要提升。
我还尝试使用问题中的代码Impersonating a Windows user 进行模拟。我的调用实现如下:
using ( new Impersonator( "testUser", "", "password" ) )
{
Process process = new Process();
process.StartInfo.UseShellExecute = true;
process.StartInfo.WorkingDirectory = "c:\\";
process.StartInfo.FileName = @"C:\Program Files (x86)\DrayTek\Smart VPN Client\SmartVPNClient.exe";
process.StartInfo.Verb = "runas";
process.Start();
}
但是运行上述代码的错误是未知错误(0xffffffffe)。
如果需要,我可以提供更多错误详情。
【问题讨论】:
标签: c#