LarsFosdal icon

How to figure out if .exe was started from network drive

LarsFosdal | PRO | 07/07/15 07:15:32 PM UTC | 0 ⭐ | 9782 👁️ | Never ⏰ | []
Delphi |

830 B

|

None

|

0 👍

/

0 👎

function IsRunningFromNetwork(const ServerName:String = 'BetYouCantFindThisServer'): Boolean;
const
 pMax = 2047;
var
  dt: UINT;
  volpath: Array[0..pMax] of Char;
  sVol: String;
  sz: Cardinal;
begin
  Result := False;
  dt := GetDriveType(PChar(ExtractFilePath(ParamStr(0))));
  if dt = 4
  then begin
    GetVolumePathNameW(PChar(LowerCase(ParamStr(0))), volpath, pMax);
    sVol := StrPas(volpath);
    if not ((pos(LowerCase(ServerName), sVol) <> 0) or (pos('\\', sVol) = 1))
    then begin
      if pos(':', sVol) <> 0
      then begin
        sz := pMax;
        if WNetGetConnection(pChar(Copy(sVol, 1, 2)), volPath, sz) = NO_ERROR
         then Result := (pos(LowerCase(ServerName), LowerCase(StrPas(volPath))) <> 0) or (pos('\\', StrPas(volPath)) = 1);
      end;
    end
    else Result := True;
  end;
end;

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎