Isto é 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 seu filho não aprender a senha do Administrador).
Primeiro, instale psexec
do pacote Sysinternals (disponível como um arquivo ZIP da Microsoft). psexec
permite que você execute programas como outros usuários (se souber a senha do outro usuário). O código abaixo assume que você 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 em 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 de rungame.exe
), mas altere o código para ter os nomes corretos para psexec
e o jogo, e também altere o código para definir a senha do Administrador personagem de cada vez (veja os comentários no 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), poderá instalar o Cygwin , que tem o compilador do GCC.
Então, dê rungame.exe
ao seu filho (mas não o código fonte, obviamente). Quando ele quiser rodar o jogo, ele lança rungame.exe
, que lançará 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;
}