Pergunta

Tentei fazer algumas coisas do Win32 no C# 3.5 para obter direitos de usuário elevados para um aplicativo de console. Eu desenvolvo no Visual Studio 2008 SP1/GDR e as coisas funcionam bem quando são executadas sob o depurador. As coisas também funcionam bem quando eu executo o aplicativo Console Stand-Agone. As coisas também funcionam bem quando eu empacote tudo em um MSI e instalo em um servidor de 2003 e executo o aplicativo Console.

Se eu pegar o mesmo MSI e instalá -lo em um servidor de 2008 com o UAC ativado, execute o aplicativo Console, recebo mensagens como esta:

Unable to set right for the account "DOMAIN\QAUSER": SeCreateGlobalPrivilege
System.UnauthorizedAccessException    Attempted to perform an unauthorized operation.

Não posso esperar que meus administradores de implantação/servidor façam qualquer coisa com meu aplicativo além de instalá -lo e eles não vão desativar o UAC. Deve haver uma maneira programática de definir corretamente os direitos do usuário que eu posso adicionar ao aplicativo Console - alguém sabe como?

Obrigado.

Foi útil?

Solução

Provavelmente você usa "Global "prefixo Para o nome do objeto em seu aplicativo e seu aplicativo será iniciado dentro de um host de sessão de desktop remoto (host de sessão rd) sessão do servidor. No caso do seu programa, tem que ativar SE_CREATE_GLOBAL_NAME (SeCreateGlobalPrivilege) privilégio. Ver C# - Como ativar o Sedebugprivilege? (mas use SE_CREATE_GLOBAL_NAME ao invés de SE_DEBUG_NAME) ou Manipular privilégios em código gerenciado de maneira confiável, segura e eficiente como um exemplo.

Outras dicas

Presumo que o UAC esteja ativado na máquina de 2008 e ainda não posso comentar sua pergunta para descobrir.

Nesse caso, verifique se, no seu App.Manifest File in Vs (em Propriedades), altere

<requestedExecutionLevel  level="asInvoker" uiAccess="false" />

para

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

Mesmo que o código esteja em execução como administrador, você deve obter o aviso da UAC.

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