MDLima Postado Agosto 3, 2010 Denunciar Share Postado Agosto 3, 2010 Boa tarde pessoal,Estou desenvolvendo um programa e preciso de um código em VB6 (só serve de for VB6) que retorne a lista de usuários do windows em uma combo. Já tenho o código para retornar o usuário atual! Eu preciso da lista de todos os usuarios!Grato. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MDLima Postado Agosto 3, 2010 Autor Denunciar Share Postado Agosto 3, 2010 Tá difícil heim? Ninguém se habilita? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Agosto 3, 2010 Denunciar Share Postado Agosto 3, 2010 Tá difícil heim? Ninguém se habilita?cara, você acabou de abrir o tópico, ta reclamando do q?? o usuarios do forum não são seus empregados.alem de ter postado na sala errada...mas respondendo, não encontrei nenhuma api q faca isso ou coisa assim (isso não significa q não exista), mas parece q o seguinte comando do prompt faz isso (chame pela funcao shellexecute()):net user > "arquivo.txt"ai a lista de usuarios deve ficar salva nesse arquivo.txt (escolha o nome e o diretorio q quiser). então você abre o arquivo pelo visual basic, e procura la os usuarios. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MDLima Postado Agosto 4, 2010 Autor Denunciar Share Postado Agosto 4, 2010 (editado) Caro colega!!Peço mil desculpas. É que estou ansioso por esse código!! Em nenhum momento pensei que alguém aqui seja empregado de outrem!!Em todo caso, muitíssimo obrigado pela resposta!! Já fiz alguns programas em VB, mas nunca precisei listar os usuários do windows (que fazem login no PC). Poderia me passar um código de exemplo? Editado Agosto 4, 2010 por MDLima Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Agosto 4, 2010 Denunciar Share Postado Agosto 4, 2010 beleza, mas vai com calma, ficar postando q nem loco não vai te ajudar a ter resposta mais rapido.então, você simplesmente chama esse comando q eu passei com um shell() (eu escrevi shellexecute() no post de cima, mas o shell() tb serve e é mais simples):Shell "cmd /C net user > ""arquivo.txt""", vbHideeu chequei aqui e vi q esse comando mostra todos os usuarios da rede e não so os q logam no windows. isso pode atrapalhar pra vc, mas é o melhor metodo q encontrei pra listar os usuarios.ai você abre o txt e procura os usuarios la dentro.as 4 primeiras linhas do txt são o cabecalho. depois é q vem os usuarios. vem 3 por linha e você separa por mid().aqui tb tem uns tutoriais pra trabalhar com arquivos texto, se você nunca fez isso, da uma olhada ai:http://en.wikibooks.org/wiki/Visual_Basic/Fileshttp://www.macoratti.net/txt_arqs.htm Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MDLima Postado Agosto 9, 2010 Autor Denunciar Share Postado Agosto 9, 2010 (editado) beleza, mas vai com calma, ficar postando q nem loco não vai te ajudar a ter resposta mais rapido.então, você simplesmente chama esse comando q eu passei com um shell() (eu escrevi shellexecute() no post de cima, mas o shell() tb serve e é mais simples):Shell "cmd /C net user > ""arquivo.txt""", vbHide eu chequei aqui e vi q esse comando mostra todos os usuarios da rede e não so os q logam no windows. isso pode atrapalhar pra vc, mas é o melhor metodo q encontrei pra listar os usuarios. ai você abre o txt e procura os usuarios la dentro. as 4 primeiras linhas do txt são o cabecalho. depois é q vem os usuarios. vem 3 por linha e você separa por mid(). aqui tb tem uns tutoriais pra trabalhar com arquivos texto, se você nunca fez isso, da uma olhada ai: http://en.wikibooks.org/wiki/Visual_Basic/Files http://www.macoratti.net/txt_arqs.htm Valeu pela dica... valeu mesmo!!! Segue o código que montei para soluconar o problema. Conteúdo do "arquivo.txt" retornado pela função: Shell "cmd /C net user > ""C:\arquivo.txt""", vbHide ' linha 0: em branco Contas de usu rio para \\TECSOM-2F4201D3 ' linha 1 ' linha 2 ------------------------------------------------------------------------------- ' linha 3 Administrador Convidado elis ' linha 4 HelpAssistant MArcos SUPPORT_388945a0 ' linha 5 Tecsom ' limha 6 Comando conclu¡do com ˆxito. ' linha 7 ' linha 8: Em branco Dim i, v, n, t, r As Integer Dim vetor As Variant With Data1.Recordset ' Controle de dados para retornar o arquivo "arquivo.txt" ReDim MT1(.RecordCount) 'Matriz carregada com os dados do controle de dados Data1 .MoveFirst For n = 1 To Data1.Recordset.RecordCount - 2 ' as linhas 7 e 8 não precisam ser relacionadas If Not IsNull(.Fields(0)) Then If InStr(1, .Fields(0), "contas de usu", vbTextCompare) > 0 Then GoTo pular ' código para não relacionar a primeira linha If InStr(1, .Fields(0), "-------------", vbTextCompare) > 0 Then GoTo pular ' código para não relacionar a segunda linha If InStr(1, .Fields(0), "comando concl", vbTextCompare) > 0 Then GoTo pular ' código para não relacionar a terceira linha If t = 0 Then t = 1 MT1(t) = .Fields(0) ' serão carregadas as linhas 4, 5 e 6 t = t + 1 pular: End If .MoveNext If .EOF Then Exit For Next Usuario.Clear ' Combobox usuário Usuario.AddItem "Todos" ' Inclusão do ítem "Todos" para serem aplicadas restrições a todos os usuários ReDim MTF(t * 2 + 1)' Matriz dimensionada com o dobro do número de linha retornadas pelo comando FOR NEXT acrescido de um r = 0 MTF(r) = "Todos" 'Uso da função Split para montar a combobox usuário For v = 0 To t vetor = Split(MT1(v)) For i = LBound(vetor) To UBound(vetor) If vetor(i) <> "" Then Usuario.AddItem vetor(i): r = r + 1: MTF(r) = vetor(i) Next Next If Not AdoReg.Recordset.BOF And Not AdoReg.Recordset.EOF Then Usuario = AdoReg.Recordset(2) End With O código funcionou muito bem. Meu problema agora são dois (espero não ter mais): 1 - Como incluir na função Shell "cmd /C net user > ""C:\arquivo.txt""", vbHide2- Como se faz para iniciar um aplicativo qualquer (em todos os usuário registrados mo PC) junto com o windows, usando o Registro do Windows?Mais uma vez grato aquem puder ajudar!!!Um forte abraço,Marcos. Editado Agosto 9, 2010 por MDLima Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Agosto 9, 2010 Denunciar Share Postado Agosto 9, 2010 1 - Como incluir na função Shell "cmd /C net user > ""C:\arquivo.txt""", vbHideacho q é isso q você quer:Shell "cmd /C net user > """ & App.Path & "\arquivo.txt""", vbHide2- Como se faz para iniciar um aplicativo qualquer (em todos os usuário registrados mo PC) junto com o windows, usando o Registro do Windows?a reposta pra isso esta aqui: http://scriptbrasil.com.br/forum/index.php?showtopic=41838 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MDLima Postado Agosto 9, 2010 Autor Denunciar Share Postado Agosto 9, 2010 O primeiro código, para a questão do path do USER NET funcionou beleza.Já o segundo, não. Veja como ficou:Public Sub RegistrarPrograma() Dim Reg As Object Set Reg = CreateObject("wscript.shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\" & "WindowsBlock", App.Path & "\" & "WindowsBlock" & ".exe" Reg.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\" & "WindowsBlock", App.Path & "\" & "WindowsBlock" & ".exe" End SubFuncionou bem em todos os usuários. No administrador, entretanto, o programa se iniciou duas vezes. Como contornar esse erro?Grato,Marcos Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Agosto 10, 2010 Denunciar Share Postado Agosto 10, 2010 acho q quando você setou no HKEY_LOCAL_MACHINE, ele já fica pra todos os usuarios. quando você setou no HKEY_CURRENT_USER, ele adicionou mais uma vez pro usuario logado no momento.você so precisaria escrever uma vez no HKEY_LOCAL_MACHINE ou então você escreveria no HKEY_CURRENT_USER pra cada usuario. so precisa escrever em um deles, escolhe qual você acha melhor (acho q seria mais facil no HKEY_LOCAL_MACHINE, já q você quer pra todos os usuarios) e apagua o q você escreveu na otra, assim não fica mais carregando duas vezes. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MDLima Postado Agosto 11, 2010 Autor Denunciar Share Postado Agosto 11, 2010 (editado) Boa tarde,Gratíssimo pelas dicas até aqui.Estou com um problema diferente agora:Quando executo o programa em outro usuário (que não seja o admin) vem a mensagem de que o arquivo (no caso o banco de dados access 2000) é somente leitura! Tentei dar permissão em todos os níveis para todos os usuários mas não consegui!Existe uma maneira de fazer isso pelo VB6?Ou uma configuração apropriada das propriedades do banco de dados do access 2000, resolve?Poderia me mostrar como se faz isso?Grato,Marcos. Editado Agosto 11, 2010 por MDLima Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Agosto 14, 2010 Denunciar Share Postado Agosto 14, 2010 mdlima, eu acho q isso deve ser problema de permissao do windows mesmo. acho q seu usuario não tem permissao pra alterar a pasta onde o banco ta dentro. acho q não é do visual basic não.tenta fazer um teste. logue com esse usuario e tente salvar um arquivo de texto qualquer nessa pasta pra ver se ele permite.ai no caso, se for do windows mesmo, e você tiver dificuldade pra conseguir dar permissao, poste na sala de windows aqui do forum explicando seu problema. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MDLima Postado Agosto 17, 2010 Autor Denunciar Share Postado Agosto 17, 2010 Olá boa tarde,O problema está nas permissões do banco de dados access.Como a minha aplicação tem um banco de dados pequeno eu migrei do access (.mdb) para o dbase IV (.dbf) e problema foi resolvido.Mesmo assim, agradeço a dica.Mas...Parece que meus problemas não se acabarão tão cedo!Coloquei um comando para habilitar/desabilitar a inicialização junto com o windows. No XP funcionou bem, já no windows 7 só funciona se eu execultar o programa como administrador. Caso contrário dá erro e encerra o programa.Acho que uma diretiva que idendifique o sistema operacional e um código apropriado resolveria.A diretiva eu sei fazer. Agora o código para dar permissão de administrador para o meu aplicativo, não!Poderia me dizer como se faz isso em VB6 (dar permissão de administrador para um programa via código)?Atenciosamente,Marcos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Agosto 17, 2010 Denunciar Share Postado Agosto 17, 2010 você pode usar o runas (comando de linha de comando) pra executar como administrador. ai você tera q digitar a senha pelo visual basic.nesse tópico aqui nos fizemos isso e deu certo: http://scriptbrasil.com.br/forum/index.php...st&p=503713faca uma busca no google pela sintaxe do runas, se você não conhece o comando.fora isso, nesse endereco tem um componente pra manipular as permissoes do windows: http://setacl.sourceforge.net/index.htmlentretanto pode acabar dando mais trabalho, já q você teria q ler a documentacao pra entender como funciona. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
MDLima
Boa tarde pessoal,
Estou desenvolvendo um programa e preciso de um código em VB6 (só serve de for VB6) que retorne a lista de usuários do windows em uma combo.
Já tenho o código para retornar o usuário atual! Eu preciso da lista de todos os usuarios!
Grato.
Link para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.