首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在(C#/ .NET/WinForms)程序中构建RUNAS/NETONLY功能?

在C#/ .NET/WinForms程序中构建RUNAS/NETONLY功能,可以通过以下步骤实现:

  1. 使用Windows API函数CreateProcessWithLogonW创建一个新的进程,并指定用户凭据。
代码语言:csharp
复制
using System;
using System.Runtime.InteropServices;

public class ProcessUtil
{
    [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    public static extern bool CreateProcessWithLogonW(
        string userName,
        string domain,
        string password,
        LogonFlags logonFlags,
        string appName,
        string cmdLine,
        CreationFlags creationFlags,
        IntPtr environmentBlock,
        string currentDirectory,
        ref STARTUPINFO startupInfo,
        out PROCESS_INFORMATION processInformation);
}
  1. 在WinForms程序中添加一个按钮,并在按钮的Click事件中调用CreateProcessWithLogonW函数。
代码语言:csharp
复制
private void button1_Click(object sender, EventArgs e)
{
    string username = "username";
    string domain = "domain";
    string password = "password";
    string appName = "notepad.exe";
    string cmdLine = "";
    IntPtr environmentBlock = IntPtr.Zero;
    string currentDirectory = "";
    STARTUPINFO startupInfo = new STARTUPINFO();
    PROCESS_INFORMATION processInformation = new PROCESS_INFORMATION();

    bool result = ProcessUtil.CreateProcessWithLogonW(
        username,
        domain,
        password,
        LogonFlags.LOGON_WITH_PROFILE,
        appName,
        cmdLine,
        CreationFlags.NORMAL_PRIORITY_CLASS,
        environmentBlock,
        currentDirectory,
        ref startupInfo,
        out processInformation);

    if (result)
    {
        MessageBox.Show("Process created successfully.");
    }
    else
    {
        MessageBox.Show("Failed to create process.");
    }
}
  1. 在程序中定义相关的结构体和枚举类型。
代码语言:csharp
复制
public enum LogonFlags
{
    LOGON_WITH_PROFILE = 1,
    LOGON_NETCREDENTIALS_ONLY = 2
}

public enum CreationFlags
{
    NORMAL_PRIORITY_CLASS = 0x00000020
}

[StructLayout(LayoutKind.Sequential)]
public struct STARTUPINFO
{
    public int cb;
    public string lpReserved;
    public string lpDesktop;
    public string lpTitle;
    public int dwX;
    public int dwY;
    public int dwXSize;
    public int dwYSize;
    public int dwXCountChars;
    public int dwYCountChars;
    public int dwFillAttribute;
    public int dwFlags;
    public short wShowWindow;
    public short cbReserved2;
    public IntPtr lpReserved2;
    public IntPtr hStdInput;
    public IntPtr hStdOutput;
    public IntPtr hStdError;
}

[StructLayout(LayoutKind.Sequential)]
public struct PROCESS_INFORMATION
{
    public IntPtr hProcess;
    public IntPtr hThread;
    public int dwProcessId;
    public int dwThreadId;
}

通过以上步骤,可以在C#/ .NET/WinForms程序中构建RUNAS/NETONLY功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Windows 下使用 runas 命令以指定的权限启动一个进程(非管理员、管理员)

runas 命令 runas 是 Windows 系统上自带的一个命令,通过此命令可以以指定权限级别间接启动我们的程序,而不止是继承父进程的权限。...RUNAS 用法: RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ] /user:...关于如何在程序判断当前是否以管理员权限运行,可以阅读我和林德熙的博客: dotnet 判断程序当前使用管理员运行降低权使用普通权限运行 - 林德熙 在 Windows 系统上降低 UAC 权限运行程序...} 此代码如果在 .NET Core 编写,以上代码需要额外安装 Windows 兼容包:Microsoft.Windows.Compatibility。...使用 C# 代码来降权运行 使用 C# 代码,就是要将下面这一句翻译成 C#。 1 > runas /trustlevel:0x20000 .

5.1K40

应用命令和文件执行权限详细

比如:某些特定的部门(财务,物流)没有管理员权限,但工作又需要使用特定的插件或程序,且该程序或插件又必须以管理员身份运行,在这种情况下,我们如果将用户的权限提升为管理员,那样会增加安全风险而且可能引起很多不可控的情况...在这种情况下我们可以使用runas命令来指定运行某个程序,这个命令是微软系统自有的包括域环境下也能使用。这样一来即解决了软件使用问题,又不会牺牲安全性。...用法: RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ] /user: program RUNAS [.../netonly 只在指定的凭据限于远程访问的情况下才使用。 /savecred 用用户以前保存的凭据。...DOMAIN\USER 形式 /showtrustlevels 显示可以用作 /trustlevel 的参数的 /trustlevel 应该是在 /showtrustlevels 枚举

99432
  • 应用命令和文件执行权限详细

    比如:某些特定的部门(财务,物流)没有管理员权限,但工作又需要使用特定的插件或程序,且该程序或插件又必须以管理员身份运行,在这种情况下,我们如果将用户的权限提升为管理员,那样会增加安全风险而且可能引起很多不可控的情况...在这种情况下我们可以使用runas命令来指定运行某个程序,这个命令是微软系统自有的包括域环境下也能使用。这样一来即解决了软件使用问题,又不会牺牲安全性。...用法: RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ] /user: program RUNAS [.../netonly 只在指定的凭据限于远程访问的情况下才使用。 /savecred 用用户以前保存的凭据。...DOMAIN\USER 形式 /showtrustlevels 显示可以用作 /trustlevel 的参数的 /trustlevel 应该是在 /showtrustlevels 枚举

    46710

    从暴力枚举用户到获取域所有信息

    krbguess 下载地址: http://www.cqure.net/tools/krbguess-0.21-bin.tar.gz 枚举命令如下: Java –jar kerbguess.jar –r...在运行完成之后会将结果保存在 metasploit 的数据库,输入命令 creds即可查看存在的用户。 ?...PowerView 这个工具大家都不陌生,使用的人挺多的,作者博客: http://www.harmj0y.net/blog 我们需要在没有加入域的主机上使用 runas和/netonly建立一个由域用户启动的...powershell 会话: runas /netonly /user:mydomain\op powershell 我们需要在弹出的框输入密码: ?...我们也可以使用 RAST 的界面程序,使用 runas 启动: runas /netonly /user:mydomain\ops mmc 下面我们用这种方式来增加主机或用户到域中: ? ?

    2.7K00

    有小伙伴问:上位机用QT还是winformwpf好?

    它支持多种编程语言,C++、Python和QML,具有强大的绘图和图形处理功能,适用于需要跨平台支持和高度定制化的应用开发。...它们利用.NET平台的强大生态系统和C#编程语言,提供了丰富的第三方库和组件,适用于需要与.NET集成和充分利用其功能的项目。...Qt的优点: - 跨平台支持:Qt是一个跨平台的开发框架,可以在多个操作系统上运行,Windows、macOS、Linux等,因此适用于开发跨平台的上位机应用程序。...- .NET生态系统:作为.NET平台的一部分,WinForms和WPF可以利用.NET生态系统丰富的第三方库、组件和工具,提供更多的扩展和功能。...- C#编程:使用C#语言进行开发可以提高开发效率,尤其是对于熟悉C#和.NET的开发人员。

    93030

    .NET Core 3.0 的新变化

    它新增了许多令人兴奋的功能支持使用 Windows 窗体 (WinForms)、Windows Presentation Foundation (WPF) 和实体框架 6 的 Windows 桌面应用程序...此外,鉴于这种并行本质,可以改进 .NET Core 的 API(包括 WinForms 和 WPF),而无需承担损坏应用程序的风险。...客户经常问的一个问题是,如何在 .NET Core 获得 RPC 体验(就像在 .NET 远程和 Windows Communication Foundation 中一样)。...此提供程序将针对 Cosmos DB 的 SQL API 启用大部分 EF Core 功能自动更改跟踪、LINQ 和值转换。...我们计划在 EF Core 3.0 添加的其他功能包括,属性包实体(将数据存储在索引属性(而不是常规属性)的实体);能够将数据库视图反向工程为查询类型;以及与新 C# 8.0 功能集成, IAsyncEnumerable

    4.9K10

    基于C#的GIS开发与应用实战介绍

    四、空间分析空间分析是GIS的重要功能之一。在基于C#的GIS开发,可以利用ArcGIS Engine提供的空间分析功能进行几何对象的操作和分析。...通过ArcGIS Engine的网络分析功能,可以构建和分析地理网络,道路网络、交通网络等。基于这些网络模型,可以执行路径规划、可达性分析等任务,为优化决策提供支持。...根据实际需求,可以选择使用WPF或WinForms构建桌面应用程序,或使用ASP.NET Core或ASP.NET Framework构建Web应用程序。...对于Web应用程序,还可以集成前端地图库(Leaflet)实现交互式地图功能。通过这些库,可以实现地图的拖拽、缩放、图层叠加等交互操作,提高用户体验。...在这个系统,实现了地图浏览、查询统计、空间分析等功能

    15210

    官博翻译 | .NET Core 即 .NET 的未来

    这些改进:并行安装(您可以安装新版本,而不必担心破坏现有应用程序)、独立的应用程序 (应用程序可以内置 .NET,因此.NET 不需要安装在计算机上),非Windows 操作系统的组件(.NET提供独立于操作系统计划的新版本...NET Core 2.0 增加了两万多个API 和组件, Razor Pages 和 SignalR,使将 Web 应用程序移植到 .NET Core 变得更加容易。...现在 .NET Core 3.0 通过添加 WinForms、WPF 和 EF6 来支持桌,从而可以将桌面应用程序移植到 .NET Core。 ?...这包括: 运行时、JIT、AOT、GC、BCL (基类库)、C#、VB.NET、F#、ASP.NET、Entity Framework、ML.NETWinForms、WPF 和 Xamarin。...希望利用 .NET 的新功能的现有应用程序应考虑迁移到 .NET Core。随着我们对未来的规划,我们将为平台带来更多的能力。你可以在这里阅读我们的计划。

    76640

    【愚公系列】2023年11月 WPF控件专题 WindowFormsHost控件详解

    《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。...自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化的用户界面元素。自定义控件可以根据需求提供更多的功能和自定义化选项,以及更好的用户体验。...一、WindowFormsHost控件详解WindowFormsHost控件是WPFWinForms集成的控件。它允许您将现有的WinForms控件嵌入到WPF应用程序,以利用它们的功能。...常见的场景有:在WPF应用程序中使用Windows Forms控件:有些Windows Forms控件具有WPF没有的功能或特性,PropertyGrid控件。...以下是一个简单的案例,展示如何在WPF窗口中嵌入WinForms控件,以及在WinForms控件中使用WPF控件。在Visual Studio创建一个WPF应用程序

    78841

    5款.NET开源、免费、功能强大的图表库

    LiveCharts2 LiveCharts2是一个.NET开源(MIT License)、简单、灵活、交互式且功能强大的.NET图表、地图和仪表,现在几乎可以在任何地方运行:Maui、Uno Platform...Blazor中使用Chart.js的库(支持Blazor WebAssembly和Blazor Server两种模式),它提供了简单易用的组件来帮助开发者快速集成数据可视化图表到他们的 Blazor 应用程序.../.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。...开发者的开源技术社区,旨在为开发者们提供全面的C#/.NET/.NET Core相关学习资料、技术分享和咨询、项目框架推荐、求职和招聘资讯、以及解决问题的平台。...我们致力于构建一个积极向上、和谐友善的.NET技术交流平台。无论您是初学者还是有丰富经验的开发者,我们都希望能为您提供更多的价值和成长机会。

    25810

    盘点8个.Net开源项目

    总的来说是一个可以快速构建、具有高性能、良好交互、美观的UI表格控件。...3、一个支持WinForms换肤的开源组件 这是一个支持自定义WinForms窗口、控件颜色、禁用状态、动画效果的皮肤组件。...7、一个高性能、低内存文件上传流.Net组件 一个基于 .NET 平台的开源项目,提供了一个简单易用的 API,可以在 Web 应用程序快速集成文件上传功能。...8、一个C#跨平台的机器视觉和机器学习的开源库 它是OpenCV的.NET封装版本,项目名称为EmguCV,它使得.NET开发人员能够调用OpenCV函数,从而快速建立复杂的视觉应用。...EmguCV库包括视觉的许多领域,工厂产品检验、医学影像、用户接口、摄像机标定、立体视觉和机器人等。

    37540

    C#.NET这些实用的编程技巧你都会了吗?

    文章详细教程:.NET使用原生方法实现文件压缩和解压TerminalGuiExercise分享了一款适用于.NET的跨平台终端 UI 工具包,帮助大家快速构建功能强大的.NET控制台应用。...C# 应用程序中使用 Bouncy Castle 提供的各种密码学功能,从而加强数据的安全性和保护隐私信息。...文章详细教程:C#版开源免费的Bouncy Castle密码库ScottPlotWinFormsExercise在.NET应用开发数据集的交互式显示是一个非常常见的功能,如需要创建折线图、柱状图、饼图...本文我们将一起来学习一下如何使用ScottPlot库在.NET WinForms快速实现大型数据集的交互式显示。...文章详细教程:.NET集成IdGenerator生成分布式全局唯一IDFusionCacheExercise缓存在程序扮演着提升性能、降低资源消耗、改善用户体验等重要角色,是构建高效、可伸缩、稳定的系统不可或缺的重要组成部分

    8810

    .NET周刊【2月第1期 2024-02-04】

    本文介绍了公众号“追逐时光者”定期分享的C#/.NET/.NET Core优秀项目和框架,包括项目介绍、功能特点、使用方式和功能截图,并提供了源码地址。...此外,文章还讨论了与ASP.NET Core的集成,以及如何在ABP定义和使用自定义声明。...部分功能已集成到Visual Studio 2022为括号对添加颜色、文件比较、带适当缩进的复制、环绕选择和滚动文档选项卡。...在 WinUI 3 应用程序利用 WinForms 功能 https://zenn.dev/shinta0806/articles/winui3-winforms 有关在基于 WinUI 3 的应用程序中使用...斜线命令 上下文变量 预览功能 调试器的异常助手 断点表达式建议 提交消息建议 解决方案参考 性能分析器的建议 失败测试分析 在 C# 取消数组 (Span) 的移位可以吗?

    15310

    C#开发BIMFACE系列53 WinForm程序中使用CefSharp加载模型图纸1 简单应用

    在我的博客《C#开发BIMFACE系列52 CS客户端集成BIMFACE应用的技术方案》中介绍了多种集成BIMFACE到客户端程序的方案。...本篇文章介绍使用CefSharp组件如何集成BIMFACE到客户端程序。...允许开发者在.NET应用程序嵌入Chromium。可以在C#或VB或任何其他CLR语言中使用。CefSharp同时提供WPF和WinForms Web浏览器控件实现。...、WebGL等 支持获取Cookies较全面 其他 二、CefSharp 下载 步骤1 新建WinForm项目 新建一个WinForm窗体应用程序,目标框架选择 .NET Framework 4.5.2...定义的方法供JS调用,C#方法的返回值类型、参数类型都只能是简单数据类型,:int、string、bool 等。

    2.4K40

    Build 2018大会:.NET概述和路线图

    你也可以使用ASP.NET Core构建本地实时SignalR应用程序。 .NET Core 2致力于Web和云,而.NET Core 3添加了对桌面应用、物联网和人工智能的支持。...但是由于在.NET Core中有并排支持,这些需要使用WinForms的应用程序可以和其他对于.NET Core的使用分开。....NET与机器学习 Azure Cognitive Services是预先构建的机器学习模块,开发人员可以直接使用。可以通过代码的REST API使用视觉、语音和语言的模块。...它可以与其他的AI库,Accord.NET和CNTK一起工作。已经有预览版可供参考。...Blazor Blazor是一款基于Razo和.NET,通过WebAssembly运行在浏览器的实验性web UI框架。旨在简化可以运行在任何浏览器快速搭建单页应用程序的工作。

    1K10
    领券