Advertisement
Nom1fan

AutoLock VHD

Apr 11th, 2025
578
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $driveLetter = "V:"  # Set your drive letter here
  2. $idleMinutes = 1
  3. $idleThreshold = $idleMinutes * 60
  4.  
  5. # Define native method for idle detection
  6. Add-Type @"
  7. using System;
  8. using System.Runtime.InteropServices;
  9.  
  10. public static class IdleTime {
  11.    [StructLayout(LayoutKind.Sequential)]
  12.    struct LASTINPUTINFO {
  13.        public uint cbSize;
  14.        public uint dwTime;
  15.    }
  16.  
  17.    [DllImport("user32.dll")]
  18.    static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
  19.  
  20.    public static int GetIdleTimeInSeconds() {
  21.        LASTINPUTINFO lii = new LASTINPUTINFO();
  22.        lii.cbSize = (uint)Marshal.SizeOf(typeof(LASTINPUTINFO));
  23.        if (!GetLastInputInfo(ref lii)) {
  24.            return 0;
  25.        }
  26.        return (Environment.TickCount - (int)lii.dwTime) / 1000;
  27.    }
  28. }
  29. "@
  30.  
  31. function Get-IdleTime {
  32.     return [IdleTime]::GetIdleTimeInSeconds()
  33. }
  34.  
  35. Write-Host "Auto-lock script running. Will lock $driveLetter after $idleMinutes minutes of inactivity."
  36.  
  37. while ($true) {
  38.     $idleTime = Get-IdleTime
  39.     Write-Host "Idle time: $idleTime seconds"
  40.  
  41.     if ($idleTime -ge $idleThreshold) {
  42.         Write-Host "Idle for $idleTime seconds. Locking drive $driveLetter..."
  43.         manage-bde -lock $driveLetter -ForceDismount
  44.  
  45.         # Wait for some activity before continuing (reset loop after user returns)
  46.         do {
  47.             Start-Sleep -Seconds 10
  48.             $idleTime = Get-IdleTime
  49.         } while ($idleTime -ge 30)
  50.  
  51.         Write-Host "User activity detected. Resuming idle monitoring..."
  52.     }
  53.  
  54.     Start-Sleep -Seconds 30
  55. }
  56.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement