vc.net的服务不是用installutil来安装vc#.net做的服务可以

解决方案 »

  1.   

    to panyee(快乐王子) :
    那请问你应该用什么来安装呢?应该怎样才能使用vc.net来做的服务呢?多谢!!
      

  2.   

    //若要安装服务,请键入: "server.exe -Install"
    int _tmain(int argc, _TCHAR* argv[])
    {
    if (argc >= 2)
    {
    if (argv[1][0] == _T('/'))
    {
    argv[1][0] = _T('-');
    }
    //使用 InstallUtil.exe 安装此 Windows 服务
    String* myargs[] = System::Environment::GetCommandLineArgs();
    String* args[] ;

    AppDomain* dom = AppDomain::CreateDomain(S"execDom");
    Type* type = __typeof(System::Object);
    String* path = type->get_Assembly()->get_Location();
    StringBuilder* sb = new StringBuilder(path->Substring(0, path->LastIndexOf(S"\\")));
    if (_tcsicmp(argv[1], _T("-Install")) == 0)
    {
    args = new String*[myargs->Length -1];
    sb->Append(S"\\InstallUtil.exe");
    args[0] = (myargs[0]);
    Array::Copy(myargs, 2, args, 1, args->Length -1);
    }
    if (_tcsicmp(argv[1], _T("-unInstall")) == 0)
    {
    args = new String*[myargs->Length];
    args[0] = S"/u"; 
    args[1] = (myargs[0]);
    Array::Copy(myargs, 2, args, 2, args->Length -2);
    }
    for( int i = 0 ;i < args->Length ; i++)
    Console::WriteLine(args[i]);
    dom->ExecuteAssembly(sb->ToString(), 0, args);

    }
    else 
    {
    ServiceBase::Run(new serverWinService());    
    }
    return 0;
    }
    当使用server.exe -install安装时成功!
    但使用server.exe -uninstall卸载时失败!
    错误信息:未处理的异常: System.IO.FileLoadException: 访问被拒绝:“v1.1.4322”。
    文件名: “v1.1.4322”
    请问应该怎样处理??
      

  3.   

    if (argc >= 2)
    {
    if (argv[1][0] == _T('/'))
    {
    argv[1][0] = _T('-');
    }
    //使用 InstallUtil.exe 安装此 Windows 服务
    String* myargs[] = System::Environment::GetCommandLineArgs();
    String* args[] ;

    AppDomain* dom = AppDomain::CreateDomain(S"execDom");
    Type* type = __typeof(System::Object);
    String* path = type->get_Assembly()->get_Location();
    StringBuilder* sb = new StringBuilder(path->Substring(0, path->LastIndexOf(S"\\")));
    if (_tcsicmp(argv[1], _T("-Install")) == 0)
    {
    args = new String*[myargs->Length-1 ];
    sb->Append(S"\\InstallUtil.exe");
    args[0] = (myargs[0]);
    Array::Copy(myargs, 2, args, 1, args->Length -1);
    }
    else
    {
    args = new String*[myargs->Length];
    sb->Append(S"\\InstallUtil.exe");
    args[0] = S"/u"; 
    args[1] = (myargs[0]);
    // Array::Copy(myargs, 2, args, 2, args->Length -2);
    }
    for( int i = 0 ;i < args->Length ; i++)
    Console::WriteLine(args[i]);
    dom->ExecuteAssembly(sb->ToString(), 0, args);
    }
    else 
    {
    ServiceBase::Run(new evTrfSrvWinService());    
    }
    return 0;OK!!!!!!!