首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以来自不同域的用户身份启动C#进程

以来自不同域的用户身份启动C#进程
EN

Stack Overflow用户
提问于 2022-04-19 08:51:26
回答 1查看 47关注 0票数 0

我正在尝试从我的家庭计算机打开一些本地安装的应用程序,但是使用我的work Windows帐户运行它们。我需要使用我的工作帐户运行它们,因为它们通过Windows身份验证进行身份验证,并且使用本地家庭Windows用户有自然的限制。

例如,如果我运行以下命令,我可以使用我的工作帐户成功地运行SSMS:

代码语言:javascript
复制
runas /netonly /noprofile /user:MYWORKDOMAIN\MYWORKUSERNAME "C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\ssms.exe"

我的家用计算机是通过VPN连接的,但否则它不在我的工作域内。上面的命令需要/netonly选项才能工作。

然而,我有许多其他的应用程序需要这个功能,我正在尝试编写一个小的C#应用程序,它可以运行这些应用程序,而不需要每次输入我的密码。我试过使用下面的代码片段,但没有成功-我收到了一个错误,说用户名和密码是不正确的(他们不是)。

代码语言:javascript
复制
var process = new System.Diagnostics.Process
{
    StartInfo =
    {
        Domain = "MYWORKDOMAIN",
        FileName = AppPath,
        Password = password,
        UserName = username,
        UseShellExecute = false,
        WindowStyle = ProcessWindowStyle.Normal,
    }
};

process.Start();

谁能告诉我我错过了什么吗?

编辑1-昵称答案的结果

在从提供的链接实现代码之后,我使用它的方式如下:

代码语言:javascript
复制
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);

这些结果是:

代码语言:javascript
复制
Before impersonation: DESKTOP-WIN11\mark
During impersonation: DESKTOP-WIN11\mark
After impersonation: DESKTOP-WIN11\mark

没有抛出错误(所以我猜这是进步)

EN

回答 1

Stack Overflow用户

发布于 2022-04-19 09:04:58

检查这个答案:https://stackoverflow.com/a/11672293/7292986

我看到许多未回答的StackOverflow线程都试图做同样的事情,但是看起来这个答案可能实际上实现了您想要的结果(尽管非常复杂)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71922173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档