Detection d'OS à l'exécution

Detection d'OS à l'exécution - C - Programmation

Marsh Posté le 23-08-2007 à 19:34:26    

Bonsoir tout le monde,
 
J'aimerai savoir si c'est possible de faire -en langage C- une détection d'OS à l'exécution du programme pour savoir sur quel OS le programme s'exécute.
PS: Je ne parle pas des marques de préprocesseur identifiant l'OS à la compilation ( #ifdef (WIN32) ...etc).
 
Merci.
 

Reply

Marsh Posté le 23-08-2007 à 19:34:26   

Reply

Marsh Posté le 23-08-2007 à 20:36:33    

Qu'est ce que vous voulez dir par:  executer 'ver' ?

Reply

Marsh Posté le 23-08-2007 à 20:47:37    

Qu'est ce que tu veux faire exactement et en quel langage ?
 
Pourquoi au moment ou tu compiles ton programme, tu n'ajoutes pas ce type de code :
 

Code :
  1. typedef enum _MY_OS { OS_LINUX, OS_WINXP, OS_WINVISTA } T_MYOS;
  2. T_MYOS myOS;
  3. #if defined(LINUX)
  4. myOS = OS_LINUX;
  5. #elif defined(WINXP)
  6. myOS = OS_WINXP;
  7. ...
  8. #endif


Le code est faux, mais ca reste du pseudo C, il est juste question de l'astuce ...

Reply

Marsh Posté le 24-08-2007 à 00:46:25    

_Reggae_ a écrit :

J'aimerai savoir si c'est possible de faire -en langage C- une détection d'OS à l'exécution du programme pour savoir sur quel OS le programme s'exécute.


Ca ne sert à rien. Refléchi un peu. Le code est compilé en fonction de l'OS. Le binaire n'est pas portable...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 24-08-2007 à 06:59:14    

Emmanuel Delahaye a écrit :


Ca ne sert à rien. Refléchi un peu. Le code est compilé en fonction de l'OS. Le binaire n'est pas portable...


 
Pas sous windows où un même binaire peut aussi bien tourner sous 95 que 98, nt4, 2000, xp, vista en passant par millenium typiquement, un programme réalisant la mise à jour d'un autre programme et devant lister les process tournant et les dlls qu'ils utilisent afin de savoir si la mise à jour des fichiers peut se faire et où les méthodes pour faire ça diffèrent selon la version de windows.

Reply

Marsh Posté le 24-08-2007 à 09:39:42    

docmaboul a écrit :

Pas sous windows où un même binaire peut aussi bien tourner sous 95 que 98, nt4, 2000, xp, vista en passant par millenium typiquement,<...>


Dans ce cas, la question initiale est mal formulée. En fait tu voudrais, pour un OS donné, savoir quelle est la version. Pour ça, chaque OS fourni une API qui donne la version exacte. Pour Windows, MSDN est ton ami :

 

http://msdn2.microsoft.com/en-us/library/ms724832.aspx

  

Message cité 1 fois
Message édité par Emmanuel Delahaye le 24-08-2007 à 11:47:30

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 24-08-2007 à 11:14:53    

Emmanuel Delahaye a écrit :

Dans ce cas, ta question initiale est mal formulée.


 
Ce n'est pas ma question.
 
 

Citation :

En fait tu voudrais, pour un OS donné, savoir quelle est la version. Pour ça, chaque OS fourni une API qui donne la version exacte. Pour Windows, MSDN est ton ami.


 
Je ne serais pas trop d'accord pour dire que windows 95 est le même OS que windows vista (par exemple) mais c'est une autre question.
 
 

Reply

Marsh Posté le 24-08-2007 à 21:19:58    

Citation :

Dans ce cas, ta question initiale est mal formulée.


Non j'étais entrain de parler d'OS différant... j'avais pas fait attention au fait que c'est compiler selon l'OS ( que chaque OS à ça propre manière de sauvé le binaire... ).

Emmanuel Delahaye a écrit :


Ca ne sert à rien. Réfléchi un peu. Le code est compilé en fonction de l'OS. Le binaire n'est pas portable...


Ok.
Ma question étais donc d'aucun intérêt.  :jap:  
 

Reply

Marsh Posté le 25-08-2007 à 23:34:41    

docmaboul a écrit :


 
Je ne serais pas trop d'accord pour dire que windows 95 est le même OS que windows vista (par exemple) mais c'est une autre question.
 


 
Non mais, ils respectent tout deux l'API Win32.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed