Pergunta

Estou a tentar alterar as configurações de Serviços de Terminal programmaticly. Eu aprendi que você deve usar tsuserex.dll.Sendo c# eu corri tsuserex através tlbimp e criado TSUSEREXLib.dll em seguida, registada com regasm.Eu tenho que trabalhar e escreveu um programa-quadro com a prof de conceito.No entanto, hoje, depois que eu fiz algumas alterações quando eu executar o meu programa eu recebo o erro

Não é possível converter o objecto COM do tipo 'System.__ComObject' para o tipo de interface 'TSUSEREXLib.IADsTSUserEx'.Esta operação falhou porque a chamada QueryInterface no componente COM para a interface com IID '{C4930E79-2989-4462-8A60-2FCF2F2955EF}' falhou devido ao seguinte erro:Nenhuma interface suportada (Exceção de HRESULT:0x80004002 (E_NOINTERFACE)).

ele thows a exceção na linha

IADsTSUserEx iad = (IADsTSUserEx)((DirectoryEntry)user.GetUnderlyingObject()).NativeObject;

Esta linha exata funcionou bem no projeto de teste.Eu sei o utilizador é válido UserPrincipal, Googleing eu encontrei esta é, normalmente, só precisa de dll registrado, mas mesmo depois de descarga e recarga, ele ainda não vai funcionar.O que é que estou em falta para causar a minha dll para parar de trabalhar.

Foi útil?

Solução

Eu sei que essa é uma velha discussão, mas desde que eu tive problemas recentemente a conclusão de todas as etapas necessárias para obter os Serviços de Terminal componentes de trabalho no Windows 7, eu queria compartilhar o que eu achei.Eu acho que as etapas abaixo são mais confiáveis do que copiar o tsuserex.dll a partir de um servidor e tentar registrá-lo.

Pelo que eu entendo, em qualquer sistema operacional, você precisa de Ferramentas de Administração de Servidor Remoto (RSAT) instalado para modificar os Serviços de Terminal atributos de uma conta de usuário por meio de programação.Em algumas versões do Windows, isso requer um download.Mas no Windows 7, o RSAT já está instalado.

Mas você pode necessitar de habilitar-lo usando as opções de configuração no Painel de Controle (appwiz.cpl).Em "Activar ou desactivar funcionalidades do Windows" goto "Remote Server Administration Tools", em seguida, certifique-se que "os Serviços de Desktop Remoto Ferramentas" está marcada.

Depois que eu fiz isso (e reiniciado) eu era capaz de usar os componentes de tsuserex.dll via PowerShell (ou seja, Definir-QADUser -Identidade testUser -TsHomeDirectory "c: shome"), e adicionando uma referência no Visual Studio 2010 (a "tsexusrm 1.0 Type Library").

Outras dicas

Você quase certamente precisa registrar novamente seu TLB na máquina de destino. O que provavelmente aconteceu é que você tem sua montagem, interface ou tipo GUID não codificado no aplicativo e, portanto, mudou em todas as reconstrução. Portanto, após a reconstrução e a implantação do seu tipo, não corresponde mais ao TLB registrado anteriormente.

A resposta correta é que sou um idiota por não relatar que meu ambiente de construção mudou. Mudei -me para uma nova WorkStaion que era o Windows 7 Corprate, em vez do Server 2003, quando comecei no projeto. O Win7 Corp não possui tsuserex.dll em seu sistema.

Configuração do Visual Studio "plataforma Target" desabilitar => "Prefere 32 bits" Resolva o problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top