• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Scieżka do katalogu Users/nazwaUżytkownika na windows, oraz do katalogu domowego na linuxie

Object Storage Arubacloud
0 głosów
838 wizyt
pytanie zadane 13 lipca 2020 w C i C++ przez Tymot372 Nowicjusz (220 p.)
Hej wszystkim
Tworzę program, który ma za zadanie odczytywać treść plików tekstowych. Do chodzenia po katalogach stworzyłem komendę cd. Ale potrzebuje początkowej ścieżki. Na windowsie chciałbym uzyskać Dysk:\\Users\\NazwaUżytkownika, a na linuxie katalogu domowego. W skrócie takie startowe ścieżki przy uruchomieniu terminala w obu systemach. Oczywiście robię to w c++. Byłbym wdzięczny gdyby ktoś pomógł. I wiem że nie wolno prosić od gotowy kod, ale ja poprosiłbym o wytłumaczenie na przykładzie, ponieważ już bardzo długo tego szukam, i zdecydowałem się napisać tutaj.
Z góry dziękuję za odpowiedź ;)
komentarz 13 lipca 2020 przez Tymot372 Nowicjusz (220 p.)
Dziękuję bardzo za windowsa :)

3 odpowiedzi

+1 głos
odpowiedź 14 lipca 2020 przez j23 Mędrzec (194,920 p.)
edycja 14 lipca 2020 przez j23

W Windowsie: SHGetSpecialFolderPath + CSIDL_PROFILE, ewentualnie getenv + USERPROFILE

W Linuksie: tylda (~) nie wystarczy?

--- dodane ---

Dla Linuksa:

#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>


std::string getHomeDirectory()
{
	passwd *userData = getpwuid(getuid());
	if(!userData) return "";
	return userData->pw_dir;
}

 

0 głosów
odpowiedź 14 lipca 2020 przez VBService Ekspert (253,340 p.)
edycja 14 lipca 2020 przez VBService

Windows Shell - CSIDL (cała lista)

C++    
    TCHAR path[MAX_PATH];
    SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, path);
    PathAppend(path, (app_name + "\\").c_str());

DOS
%appdata%
C:\Users\nazwa_profilu\AppData\Roaming

*nazwa_profilu - użytkownika

C++ (Cpp) SHGetFolderPath Examples

TCHAR szPath[MAX_PATH];

if(SUCCEEDED(SHGetFolderPath(NULL, 
                             CSIDL_PERSONAL|CSIDL_FLAG_CREATE, 
                             NULL, 
                             0, 
                             szPath))) 
{
    PathAppend(szPath, TEXT("New Doc.txt"));
    HANDLE hFile = CreateFile(szPath, ...);
}

SHGetFolderPathA function ] [ SHGetSpecialFolderPathA function ]

GetEnvironmentVariable function

TCHAR szBuf[MAX_PATH] = {0};
::GetEnvironmentVariable(_T( "USERPROFILE" ), szBuf, MAX_PATH);
typedef enum  {
  KF_FLAG_DEFAULT,
  KF_FLAG_FORCE_APP_DATA_REDIRECTION,
  KF_FLAG_RETURN_FILTER_REDIRECTION_TARGET,
  KF_FLAG_FORCE_PACKAGE_REDIRECTION,
  KF_FLAG_NO_PACKAGE_REDIRECTION,
  KF_FLAG_FORCE_APPCONTAINER_REDIRECTION,
  KF_FLAG_NO_APPCONTAINER_REDIRECTION,
  KF_FLAG_CREATE,
  KF_FLAG_DONT_VERIFY,
  KF_FLAG_DONT_UNEXPAND,
  KF_FLAG_NO_ALIAS,
  KF_FLAG_INIT,
  KF_FLAG_DEFAULT_PATH,
  KF_FLAG_NOT_PARENT_RELATIVE,
  KF_FLAG_SIMPLE_IDLIST,
  KF_FLAG_ALIAS_ONLY
} KNOWN_FOLDER_FLAG;


KNOWN_FOLDER_FLAG enumeration ]

0 głosów
odpowiedź 14 lipca 2020 przez VBService Ekspert (253,340 p.)
edycja 14 lipca 2020 przez VBService

Linux user Profile Management and Environment Variable

linux/unix based systems use getenv

How to Set and List Environment Variables in Linux [ $ printenv ]

Common Set of Environment Variables on Linux

Now that you know how you can set and unset environment variables on Linux, it is time to have a look at the common set of environment variables that you can find on your system.

  • USER : the current username of the user using the system;
  • EDITOR : the program run to perform file edits on your host;
  • HOME : the home directory of the current user;
  • PATH : a colon separated list of directories where the system looks for commands;
  • PS1 : the primary prompt string (to define the display of the shell prompt);
  • PWD : the current working directory;
  • _ : the most recent command executed on the system (by the user)
  • MAIL : the path to the current user’s mailbox;
  • SHELL : the shell used in order to interpret commands on the system, it can be many different ones (like bash, sh, zsh or others);
  • LANG : the language encoding used on the system;
  • DESKTOP_SESSION : the current desktop used on your host (GNOME, KDE)
  • HISTFILESIZE : number of lines of command history stored in the history file;
  • HISTSIZE : number of lines of history allowed in memory;
  • UID : the current UID for the user

Podobne pytania

0 głosów
1 odpowiedź 305 wizyt
+2 głosów
0 odpowiedzi 105 wizyt
0 głosów
1 odpowiedź 1,234 wizyt

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...