Olá pessoal!
Queria saber como que eu posso alterar o nível de privilégio (para Adminstrador) pelo C++.
Não quero ter que clicar com o botão direito do mouse e mandar “executar como Administrador”, porque eu preciso distribuir esse executável junto com meu aplicativo.
Obrigada
Obrigada!
vou ver se consigo agora!
Obrigada entanglement, consegui fazer o manifest aqui!
Funcionou
Aiaiaiaiaiaiaiaiai!!!
Eu sei que é uma pergunta boba… mas eu consegui fazer o MANIFEST pro VC++, mas o código que eu fiz no Dev C++ (e funcionava) não funciona no Visual C++… Quando eu executo o EXE, dá erro.
Eu preciso fazer algo diferente no VC++??
Este é meu código:
[code]#include <Windows.h>
int main() {
STARTUPINFO infoBina = {sizeof(infoBina)};
PROCESS_INFORMATION processInfoBina;
infoBina.dwFlags = STARTF_USESHOWWINDOW;
infoBina.wShowWindow = SW_HIDE;
if (CreateProcess(NULL, L"java -jar medfour-technic.jar", NULL, NULL, FALSE,
0, NULL, NULL, &infoBina, &processInfoBina)) {
CloseHandle(processInfoBina.hProcess);
CloseHandle(processInfoBina.hThread);
}
return 0;
}[/code]
Obrigada
Só chutando, mas é porque ele não encontra o java.exe ? Talvez quando executado como administrador o path seja um pouco diferente 
testei aqui, mas não é por causa disso não.
Troquei
CreateProcess(NULL, L"java -jar medfour-technic.jar", NULL, NULL, FALSE,
0, NULL, NULL, &infoBina, &processInfoBina)
por
CreateProcess(NULL, L"\"C:\\Program Files\\Java\\jre6\\bin\\java.exe\" -jar medfour-technic.jar", NULL, NULL, FALSE,
0, NULL, NULL, &infoBina, &processInfoBina)
Outra coisa… quando eu tinha meu EXE criado pelo Dev C++, eu mandava executar como Administrador manualmente e funcionava normal.
Com certeza é algo que o VC++ exige de diferente 
Obrigada
Resolvi meu problema usando o Dev C++… não sei o que acontece comigo que eu NUNCA consegui compilar um codigozinho sequer no VC++…
Foram esses os passos:
Criei no diretório do meu projeto um arquivo chamado medfour.rc com o seguinte código:
// Manifest include
24 1 DISCARDABLE "medfour.manifest"
Criei no diretório do meu projeto um arquivo chamado medfour.manifest com o seguinte código:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0"
processorArchitecture="X86"
name="IsUserAdmin"
type="win32"/>
<description>Description of your application</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
No Dev C++, fui em Project Properties -> Directories -> Resource Directories e adicionei o caminho do meu arquivo .RC que eu criei (E:\sistemas\medstorm\trunk\medfour-technic\cpp).
Tudo compilou com esse código:
[code]#include <windows.h>
int main() {
STARTUPINFO infoBina = {sizeof(infoBina)};
PROCESS_INFORMATION processInfoBina;
infoBina.dwFlags = STARTF_USESHOWWINDOW;
infoBina.wShowWindow = SW_HIDE;
if (CreateProcess(NULL, "java -jar medfour-technic.jar", NULL, NULL, FALSE,
0, NULL, NULL, &infoBina, &processInfoBina)) {
CloseHandle(processInfoBina.hProcess);
CloseHandle(processInfoBina.hThread);
}
return 0;
}[/code]
Até mais
Conforme você deve ter lido no MSDN, o Visual Studio requer que esse arquivo .manifest seja inserido no executável não como um resource normal, mas usando a ferramenta mt.exe. Acho que foi isso que lhe quebrou as pernas. Argh
Não use o DevCpp. Ele é uma IDE antiga, que trabalha com uma versão muito pré-histórica do MinGW. Se você se dá bem com ele, é porque gosta do compilador MinGW, que é o que essa IDE usa. Uma alternativa mais nova com o MinGW é o CodeBlocks:
http://www.codeblocks.org/
Embora eu recomende fortemente que você perca algum tempo entendendo melhor pq seus códigos não compilam no Visual. O Visual hoje é de longe a melhor IDE do mercado para Windows, com ótimos recursos de depuração e code completion.
Obrigada ViniGodoy, vou seguir o seu conselho…
O problema é que eu nunca estudei C++.
Preciso, na verdade, comprar um livro pra entender melhor a linguagem e tirar um tempo pra estudar de verdade, porque eu só ando usando na empresa, quando eu preciso fazer uma coisa ou outra no C.
Até mais
[quote=ViniGodoy]Não use o DevCpp. Ele é uma IDE antiga, que trabalha com uma versão muito pré-histórica do MinGW. Se você se dá bem com ele, é porque gosta do compilador MinGW, que é o que essa IDE usa. Uma alternativa mais nova com o MinGW é o CodeBlocks:
http://www.codeblocks.org/
Embora eu recomende fortemente que você perca algum tempo entendendo melhor pq seus códigos não compilam no Visual. O Visual hoje é de longe a melhor IDE do mercado para Windows, com ótimos recursos de depuração e code completion.[/quote]
Nao foi exatamente o código que quebrou no MSVC. O problema é que o Visual Studio, por alguma idiossincrasia, não aceita que um arquivo .manifest seja incluido simplesmente como resource do projeto; uma vez já tive de fazer a mesma coisa que a Eliangela precisou, e aprendi a duras penas que é necessário usar um wizard do Visual Studio que inclui como um passo do projeto a execução dessa ferramenta mt.exe. (Na verdade, como a minha versão do Visual Studio era antiga, tive de rodar eu mesmo a ferramenta mt.exe manualmente - oh oh, personalizei os passos do build, é claro, mas isso é uma coisa que é terrivelmente sujeita a erros).
Consegui isso usando o visual C++.
Disponibilizei a solução no meu site: http://www.eliangela.info/
Obrigada pela ajuda