2016-03-28 19 views
1

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?

+1

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 []. –

+0

Kodu düzenledim. Şimdi 32 bit bilgisayarımda çalışıyor. Ama 64 bit üzerinde nasıl çalışabilirim? – user1067742

cevap

0

yapmış! Sorun yönetici haklarına sahip değildi. Bu 32 bit/64 bit ayrım ile ilgili değildir. Hizmet denetim programı oluşturmak, başlatmak, durdurmak için yönetici denetiminin yönetici haklarına sahip olması gerekir. Komut satırını yönetici haklarıyla başlattım ve program işe yaradı.