Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Переменные среды (http://forum.oszone.net/showthread.php?t=236725)

O L E G 15-06-2012 16:03 1934802

Переменные среды
 
пытался указать пути к файлам
Код:

%windir%\\ и \ и / и //,%systemdrive%,%homedrive%,%system32%
С++ не видит путь,но при стандартном указании, работает
Код:

C://123.txt
C://Windows//system32//123.txt

понимает ли он вообще Среды?

lxa85 15-06-2012 16:52 1934838

O L E G, C++ среды не понимает. Т.к. он за них не отвечает.
Кто-то должен разименовать переменную.
Т.е. надо кого-то/что-то спросить, кто переведет %windir% в строку.
Значит надо использовать какую-либо библиотеку, которая поможет в этом деле.
И ее, библиотеку, естественно надо правильно об этом попросить.
GetSystemWindowsDirectory function
File System Redirector
Shell.NameSpace method
GetEnvironmentVariable function

ferget 15-06-2012 17:19 1934849

тут пример

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

O L E G 18-06-2012 12:13 1936213

Спасибо Народ за помощь, разобрался
Кому надо смотрим: Пример
Сниманаю аттрибуты с файла 45.txt в папке %Temp%
Работоспособность 100%
Код:

#include <windows.h>
#include <tchar.h>
#include <stdio.h>

TCHAR* envVarStrings[] =
{
  TEXT("%OS%"), // ващи пути которые будут указанны в работе
  TEXT("%PATH%"),
  TEXT("%HOMEPATH%"),
  TEXT("%TEMP%"),
  TEXT("%SystemDrive%")
};
#define  ENV_VAR_STRING_COUNT  (sizeof(envVarStrings)/sizeof(TCHAR*))
#define INFO_BUFFER_SIZE 32767
void printError( TCHAR* msg );

void main( )
{
  DWORD i;
  TCHAR  infoBuf[INFO_BUFFER_SIZE];
  DWORD  bufCharCount = INFO_BUFFER_SIZE;
 
  system ("attrib -r -s -h %TEMP%\\45.txt"); // снимаю атрибуты с файла
}

void printError( TCHAR* msg )
{
  DWORD eNum;
  TCHAR sysMsg[256];
  TCHAR* p;

  eNum = GetLastError( );
  FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL, eNum,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        sysMsg, 256, NULL );

  // Trim the end of the line and terminate it with a null
  p = sysMsg;
  while( ( *p > 31 ) || ( *p == 9 ) )
    ++p;
  do { *p-- = 0; } while( ( p >= sysMsg ) &&
                          ( ( *p == '.' ) || ( *p < 33 ) ) );

  // Display the message
  _tprintf( TEXT("\n\t%s failed with error %d (%s)"), msg, eNum, sysMsg );
}


Iska 18-06-2012 12:41 1936227

Оригинально.

GetFileAttributes function
SetFileAttributes function


Время: 14:12.

Время: 14:12.
© OSzone.net 2001-