2010-06-11 4 views
0

J'écris un logiciel de test qui reçoit un code source, le compile sur le serveur, l'exécute, transmet l'entrée de la base de données, attrape la sortie et la compare avec un dans la base de données pour voir si c'est correct. Le problème est que le code source peut être quelque chose (il est écrit en c/c + + et compilé avec Visual Studio Cl), donc je dois prévenir les utilisateurs mal intentionnés. Je mets automatiquement fin à ces processus s'ils durent plus longtemps qu'un certain temps, ou utilise plus de mémoire que ce qui est autorisé. La question est, puis-je permettre à ces processus seulement d'écrire et de lire des flux d'entrée/sortie standard et de refuser tout autre droit d'accès sur Windows.Comment donner des privilèges spécifiques de processus dans Windows

Veuillez excuser mon anglais.

Merci d'avance.

Répondre

1

Probablement Les objets de tâche peuvent vous aider (voir http://msdn.microsoft.com/en-us/library/ms684161(VS.85).aspx). Cette fonctionnalité très puissante n'est pas bien connue.

Travailler avec des travaux est très facile. Vous pouvez créer un travail en respectant CreateJobObject et définir un grand nombre de restrictions différentes comme le temps, la mémoire et certaines restrictions. Vous pouvez ensuite créer un processus avec un indicateur suspendu, affecter le processus au travail et reprendre le processus. Ensuite, vous recevez un contrôle total sous le processus créé et tous les processus de l'arbre des enfants, que le processus peut créer. fonction d'emploi existe depuis Windows 2000.

Une autre façon moderne est Isolation des privilèges de l'interface utilisateur (UIPI) (voir http://msdn.microsoft.com/en-us/library/bb625963.aspx) ou la voie d'utilisation Processus à faible intégrité introduites par Vista. Voir http://msdn.microsoft.com/en-us/library/Bb250462#dse_stlip comment créer un processus avec Low Integrity.

+0

Merci, c'était très utile. La plus grande partie de mon projet est écrite en Java, donc je vais essayer de trouver une bonne API pour les objets de travail, ou je vais utiliser JNI, ou essayer UIPI. Merci beaucoup. – Klark

Questions connexes