Servis Yöneticisi'ne bir servis yüklemek ve çalıştırmak istiyorum. Kodum şu şekildedir: Windows hizmetlerini advapi32.dll kullanarak 64 bit sistemlere yükleme
using System;
using System.Runtime.InteropServices;
class Ana
{
static void Main()
{
IntPtr sc_handle=OpenSCManager(null,null,2);
IntPtr sv_handle = CreateService(sc_handle, "deneme", "deneme", 16, 16, 2, 0, @"D:\ServisDeneme2.exe", null, null, null, null, null);
int i=StartService(sv_handle,0,null);
CloseServiceHandle(sc_handle);
}
[DllImport("advapi32.dll")]
public static extern IntPtr OpenSCManager(string machine, string db, int parameter);
[DllImport("advapi32.dll")]
public static extern IntPtr CreateService(IntPtr SC_HANDLE, string lpSvcName, string lpDisplayName, int dwDesiredAccess, int dwServiceType, int dwStartType, int dwErrorControl, string lpPathName, string lpLoadOrderGroup, object lpdwTagId, string lpDependencies, string lpServiceStartName, string lpPassword);
[DllImport("advapi32.dll")]
public static extern void CloseServiceHandle(IntPtr SCHANDLE);
[DllImport("advapi32.dll")]
public static extern int StartService(IntPtr SVHANDLE, int dwNumServiceArgs, string[] lpServiceArgVectors);
}
Bu kod 32 bit bilgisayarımda mükemmel çalışır ancak 64 bit bilgisayarlarda çalışmaz. Aynı işi 64 bit için nasıl yapabilirim?
Bildirimler buggy. Şu anda kesinlikle CreateService'nin lpdwTagId argümanına düşüyorsunuz, aslında 'int'. Muhtemelen onu kullanmak istemiyorsunuz, onu * object * olarak ilan edip null. StartService de yanlıştır, ölümcül değildir, son argüman string []. –
Kodu düzenledim. Şimdi 32 bit bilgisayarımda çalışıyor. Ama 64 bit üzerinde nasıl çalışabilirim? – user1067742