中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

C#中CreateProcessAsUser服務調用的方法是什么

c#
小億
125
2023-09-15 14:14:49
欄目: 編程語言

在C#中,可以使用Advapi32.CreateProcessAsUser方法來調用CreateProcessAsUser服務。

以下是使用Advapi32.CreateProcessAsUser方法調用CreateProcessAsUser服務的示例代碼:

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
class Program
{
static void Main(string[] args)
{
// 獲取當前用戶的訪問令牌
IntPtr currentUserToken = WindowsIdentity.GetCurrent().Token;
// 創建進程信息結構體
ProcessInformation processInfo = new ProcessInformation();
// 填充啟動信息結構體
StartupInfo startupInfo = new StartupInfo();
startupInfo.cb = Marshal.SizeOf(startupInfo);
// 調用CreateProcessAsUser方法創建進程
bool success = Advapi32.CreateProcessAsUser(
currentUserToken,   // 當前用戶的訪問令牌
"C:\\Path\\To\\Program.exe",   // 要啟動的程序的路徑
null,   // 命令行參數
IntPtr.Zero,   // 進程安全屬性
IntPtr.Zero,   // 線程安全屬性
false,   // 是否繼承句柄
0,   // 創建標志
IntPtr.Zero,   // 環境變量
null,   // 當前目錄
ref startupInfo,   // 啟動信息結構體
out processInfo   // 進程信息結構體
);
// 檢查進程創建是否成功
if (success)
{
Console.WriteLine("進程創建成功");
}
else
{
Console.WriteLine("進程創建失敗,錯誤碼:" + Marshal.GetLastWin32Error());
}
}
}
// 定義啟動信息結構體
[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 ProcessInformation
{
public IntPtr hProcess;
public IntPtr hThread;
public int dwProcessId;
public int dwThreadId;
}
// 定義Advapi32類用來訪問Advapi32.dll中的方法
public class Advapi32
{
// 導入Advapi32.dll中的CreateProcessAsUser方法
[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern bool CreateProcessAsUser(
IntPtr hToken,
string lpApplicationName,
string lpCommandLine,
IntPtr lpProcessAttributes,
IntPtr lpThreadAttributes,
bool bInheritHandles,
int dwCreationFlags,
IntPtr lpEnvironment,
string lpCurrentDirectory,
ref StartupInfo lpStartupInfo,
out ProcessInformation lpProcessInformation
);
}

請注意,為了成功調用CreateProcessAsUser服務,你需要擁有適當的權限。

0
河源市| 蓝田县| 平罗县| 四川省| 东乡| 安平县| 呼图壁县| 东莞市| 友谊县| 玛曲县| 遂平县| 沽源县| 九寨沟县| 阳高县| 平武县| 宁晋县| 瑞金市| 师宗县| 涿州市| 霍山县| 陇川县| 凉山| 安福县| 四川省| 荣成市| 天峨县| 灵山县| 永德县| 开封市| 梧州市| 巩义市| 张家港市| 高清| 泾川县| 禹州市| 平邑县| 手游| 东安县| 垫江县| 平阳县| 留坝县|