我正在尝试从我的家庭计算机打开一些本地安装的应用程序,但是使用我的work Windows帐户运行它们。我需要使用我的工作帐户运行它们,因为它们通过Windows身份验证进行身份验证,并且使用本地家庭Windows用户有自然的限制。
例如,如果我运行以下命令,我可以使用我的工作帐户成功地运行SSMS:
runas /netonly /noprofile /user:MYWORKDOMAIN\MYWORKUSERNAME "C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\ssms.exe"我的家用计算机是通过VPN连接的,但否则它不在我的工作域内。上面的命令需要的/netonly选项才能工作。
然而,我有许多其他的应用程序需要这个功能,我正在尝试编写一个小的C#应用程序,它可以运行这些应用程序,而不需要每次输入我的密码。我试过使用下面的代码片段,但没有成功-我收到了一个错误,说用户名和密码是不正确的(他们不是)。
var process = new System.Diagnostics.Process
{
StartInfo =
{
Domain = "MYWORKDOMAIN",
FileName = AppPath,
Password = password,
UserName = username,
UseShellExecute = false,
WindowStyle = ProcessWindowStyle.Normal,
}
};
process.Start();谁能告诉我我错过了什么吗?
编辑1-昵称答案的结果
在从提供的链接实现代码之后,我使用它的方式如下:
Console.WriteLine("Before impersonation: " + WindowsIdentity.GetCurrent().Name);
using (new Impersonator("MYWORKUSERNAME", "MYWORKDOMAIN", "MYWORKPASSWORD"))
{
Console.WriteLine("During impersonation: " + WindowsIdentity.GetCurrent().Name);
}
Console.WriteLine("After impersonation: " + WindowsIdentity.GetCurrent().Name);这些结果是:
Before impersonation: DESKTOP-WIN11\mark
During impersonation: DESKTOP-WIN11\mark
After impersonation: DESKTOP-WIN11\mark没有抛出错误(所以我猜这是进步)
发布于 2022-04-19 09:04:58
检查这个答案:https://stackoverflow.com/a/11672293/7292986
我看到许多未回答的StackOverflow线程都试图做同样的事情,但是看起来这个答案可能实际上实现了您想要的结果(尽管非常复杂)。
https://stackoverflow.com/questions/71922173
复制相似问题