Isso é factível, mas você precisa ser capaz de esconder a senha do Administrador dentro de um programa compilado (não segurança perfeita, de qualquer forma, mas bom o suficiente para o seu filho não aprender a senha do Administrador).
Primeiro instale a psexec
partir do conjunto Sysinternals (disponível como um arquivo ZIP da Microsoft). psexec
permite executar programas como outros usuários (se você souber a senha do outro usuário). O código abaixo presume que você o instalou em C:\sysinternals\psexec.exe
. Certifique-se de que a conta do seu filho pode executar o programa. Isso exigirá alterar as configurações de segurança psexec.exe
para conceder permissão de leitura e execução à conta do seu filho.
Em seguida, compile o programa C abaixo em um executável (vamos chamá-lo rungame.exe
), mas mude o código para ter os nomes corretos psexec
e o jogo, e também altere o código para definir a senha do Administrador um caractere de cada vez (veja os comentários em o código). É assim que ofuscamos a senha do Administrador dentro do EXE. Se você não tiver um compilador da Microsoft (por exemplo, Visual Studio), você pode instalar o Cygwin , que possui o compilador GCC.
Então dê rungame.exe
para o seu filho (mas não o código fonte, obviamente). Quando ele quer executar o jogo, ele lança rungame.exe
, que irá iniciar o jogo como administrador sem solicitar a senha.
#include <windows.h>
#include <stdlib.h>
// Be sure to use double-backslashes as path separators in this pathnames!
char * psexec = "C:\\sysinternals\\psexec.exe"; // <-- CHANGE THIS PATH AS NEEDED
char * game = "C:\\path\\to\\game\\program.exe"; // <-- CHANGE THIS PATH AS NEEDED
int main()
{
char cmd[1024] = { 0 };
char pw[128] = { 0 };
// Create the password ("hello" in this example) so that it does not appear as a string in the
// compiled version of this program.
pw[4] = 'o';
pw[3] = 'l';
pw[2] = 'l';
pw[1] = 'e';
pw[0] = 'h';
strcpy(cmd, "\"");
strcat(cmd, psexec);
strcat(cmd, "\" -d -u Administrator -p \"");
strcat(cmd, pw);
strcat(cmd, "\" \"");
strcat(cmd, game);
strcat(cmd "\"");
system(cmd);
return 0;
}