You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Zero/ZeroLevel/Services/AsService/Windows/NativeMethods.cs

92 lines
3.9 KiB

using System;
using System.Runtime.InteropServices;
using System.Text;
namespace ZeroLevel.Services.AsService
{
public partial class NativeMethods
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class LSA_UNICODE_STRING_withPointer
{
public short length;
public short maximumLength;
public IntPtr pwstr = (IntPtr)0;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class LSA_UNICODE_STRING
{
public short length;
public short maximumLength;
public string buffer;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class LSA_OBJECT_ATTRIBUTES
{
public int length;
public IntPtr rootDirectory = (IntPtr)0;
public IntPtr pointerLsaString = (IntPtr)0;
public int attributes;
public IntPtr pointerSecurityDescriptor = (IntPtr)0;
public IntPtr pointerSecurityQualityOfService = (IntPtr)0;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct SERVICE_DELAYED_AUTOSTART_INFO
{
public bool fDelayedAutostart;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct SERVICE_DESCRIPTION
{
public IntPtr description;
}
[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern bool ChangeServiceConfig2(IntPtr serviceHandle, uint infoLevel, ref SERVICE_DESCRIPTION serviceDesc);
[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern bool ChangeServiceConfig2(IntPtr serviceHandle, uint infoLevel, ref SERVICE_DELAYED_AUTOSTART_INFO serviceDesc);
[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern IntPtr CreateService(IntPtr databaseHandle, string serviceName, string displayName, int access, int serviceType, int startType, int errorControl, string binaryPath, string loadOrderGroup, IntPtr pTagId, string dependencies, string servicesStartName, string password);
[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern bool LookupAccountName(string systemName, string accountName, byte[] sid, int[] sidLen, char[] refDomainName, int[] domNameLen, [In] [Out] int[] sidNameUse);
[DllImport("advapi32.dll", CharSet = CharSet.Unicode)]
public static extern int LsaAddAccountRights(IntPtr policyHandle, byte[] accountSid, LSA_UNICODE_STRING userRights, int countOfRights);
[DllImport("advapi32.dll", CharSet = CharSet.Unicode)]
public static extern int LsaEnumerateAccountRights(IntPtr policyHandle, byte[] accountSid, out IntPtr pLsaUnicodeStringUserRights, out int RightsCount);
[DllImport("advapi32.dll", CharSet = CharSet.Unicode)]
public static extern int LsaOpenPolicy(LSA_UNICODE_STRING systemName, IntPtr pointerObjectAttributes, int desiredAccess, out IntPtr pointerPolicyHandle);
[DllImport("advapi32.dll", CharSet = CharSet.Unicode)]
public static extern int LsaRemoveAccountRights(IntPtr policyHandle, byte[] accountSid, bool allRights, LSA_UNICODE_STRING userRights, int countOfRights);
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern bool GetComputerName(StringBuilder lpBuffer, ref int nSize);
[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern bool DeleteService(IntPtr serviceHandle);
[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern IntPtr OpenService(IntPtr databaseHandle, string serviceName, int access);
}
}

Powered by TurnKey Linux.