Как средствами API создать службу на удалённом компе?
IntPtr schSCManager = OpenSCManager("winxp1-vm", null, (uint)(MyFlags.SC_MANAGER_CREATE_SERVICE));
CreateService
(
schSCManager, // SCManager database
"Service1", // name of service
"Service1", // service name to display
(uint)(SERVICE_ACCESS.SERVICE_ALL_ACCESS), // desired access
(uint)(MyFlags.SERVICE_WIN32_OWN_PROCESS) | (uint)(MyFlags.SERVICE_INTERACTIVE_PROCESS), // service type
(uint)(MyFlags.SERVICE_AUTO_START), // start type
(uint)(MyFlags.SERVICE_ERROR_NORMAL), // error control type
"D:\\WindowsService1.exe", // service's binary
null, // no load ordering group
null, // no tag identifier
null, // no dependencies
null, // LocalSystem account
null
); // no password
Если в параметрах OpenSCManager прописываю имя своего компа, то всё ОК, служба создаётся. Если в параметрах OpenSCManager прописываю имя удалённого компа из локалки, то schSCManager=0, службу создать не получается. Что не так? Вобще можно создавать так службу на удалённом компе?
SC_MANAGER_CREATE_SERVICE определяется так:
[Flags]
enum MyFlags : uint
{
SC_MANAGER_CREATE_SERVICE = 0x0002,
}
Функция OpenSCManager по Pinvoke.net подключается так:
[DllImport("advapi32.dll", EntryPoint = "OpenSCManagerW", ExactSpelling = true, CharSet = CharSet.Unicode, SetLastError = true)]
public static extern IntPtr OpenSCManager(string machineName, string databaseName, uint dwAccess);
1)Учётная запись администратора?
2)Может,следует перед именем компьютера ставить "\\"(возможно,следует учесть,что в C++ для обозначения одного слэша требуется указать пару)
3)MSDN читали?