I've figured out ways to detect if windoze exists on the root of HDD C, but not if it is active
Code:
#include <string.h>
#include <io.h>
#include <direct.h>
#include <dos.h>
FILE *fp;
char *starstring, sizedstring1[700], sizedstring2[700];
int i;
char ver[40];
main()
{
system("cd >c:\iswin.tmp");
system("C:");
chdir("\\");
dos_setfileattr("msdos.sys", FA_NORMAL);
fp=fopen("msdos.sys", "r");
if(fp==NULL)
{
printf("Unable to open C:\\MSDOS.SYS\n");
return(0);
}
starstring=fgets(sizedstring1, 700, fp);
starstring=fgets(sizedstring1, 8, fp);
if(strncmp(starstring, "WinDir=", 7)==0)
{
printf("Windows is installed.\n");
starstring=fgets(sizedstring1, 700, fp);
printf("Windows primary directory is %s", starstring);
fclose(fp);
system("VER >>~tmp01.tmo");
fp=fopen("~tmp01.tmo", "r");
starstring=fgets(ver, 7, fp);
starstring=fgets(ver, 20, fp);
fclose(fp);
remove("~tmp01.tmo");
if((strncmp(starstring, "Window", 6)==0))
{
if(strncmp(starstring, "Windows 95", 10)==0)
{
printf("Major version 'Windows 95'\n");
}
if(strncmp(starstring, "Windows 98", 10)==0)
{
printf("Major version 'Windows 98'\n");
}
if(strncmp(starstring, "Windows Mi", 10)==0)
{
printf("Major version 'Windows Millenium'\n");
}
}
if(strncmp(starstring, "Microsoft Windows XP", 20)==0)
{
printf("Major version 'Windows XP'\n");
}
i=1;
}
else
{
printf("Windows is not installed.\n");
fclose(fp);
i=0;
}
dos_setfileattr("msdos.sys", FA_HIDDEN);
fp=fopen("iswin.tmp", "r");
starstring=fgets(sizedstring1, 700, fp);
fclose(fp);
strcpy(sizedstring2, "cd ");
strcat(sizedstring2, sizedstring1);
system(sizedstring2);
strcpy(sizedstring2, "/0");
strncpy(sizedstring2, starstring, 2);
system(sizedstring2);
remove("C:\iswin.tmp");
return(i); /* if return errorlevel is 1 then windows was detected. */
}
it reads from MSDOS.SYS. I also did it with system("ver >>tmp.tmp"); and read from tmp.tmp.