
Contents
Pernahkah Anda membuat sebuah script otomatisasi, background service, atau scheduled task yang tiba-tiba gagal total saat dijalankan? Begitu Anda cek log error-nya, ternyata masalahnya klasik: “Access Denied” saat mencoba mengakses folder di jaringan (network share).
Masalah ini sering terjadi karena service tersebut berjalan di bawah System Account (NT AUTHORITY\SYSTEM). Secara default, akun super-administrator lokal ini tidak punya “paspor” alias kredensial untuk keluar ke jaringan komputer lain.
Di artikel ini, kita akan membongkar trik menjinakkan System Account agar bisa mengenali kredensial jaringan dan bagaimana cara melakukan Map Network Drive agar folder jaringan tersebut punya huruf drive sendiri (seperti Z:) yang terbaca secara permanen.
Bagian 1: Memberi “Paspor” Jaringan ke System Account
Karena System Account tidak memiliki antarmuka grafis (GUI) seperti user biasa, kita tidak bisa sekadar membuka File Explorer dan mengetik username dan password. Kita harus memasukkannya secara sistemik menggunakan Windows Credential Manager atau via Command Prompt (CMD) dengan hak akses sistem.
Cara paling efektif adalah menyuntikkan kredensial tersebut langsung ke dalam kubah enkripsi Windows menggunakan perintah cmdkey.
Langkah Tempel Kredensial via CMD:
- Buka Command Prompt sebagai Administrator (Right click -> Run as Administrator).
- Gunakan alat bantu seperti
psexec(dari Sysinternals) untuk masuk ke dalam environment System Account dengan mengetik:psexec -i -s cmd.exe. Jika Anda tidak menggunakan psexec, Anda bisa mendaftarkan kredensial generik ini langsung agar bisa diakses oleh sistem. - Masukkan perintah berikut untuk menyimpan kredensial target jaringan Anda:
Bash
cmdkey /add:NAMA_SERVER_ATAU_IP /user:USERNAME_JARINGAN /pass:PASSWORD_ANDA
Mengapa ini berhasil? Perintah ini membuat Windows menyimpan generic credential. Setiap kali System Account mencoba mengetuk pintu
\\NAMA_SERVER, Windows akan otomatis menyodorkan username dan password yang sudah kita titipkan tadi.
Bagian 2: Menghubungkan Map Network Drive yang “Abadi”
Setelah System Account memiliki hak akses, tantangan berikutnya adalah melakukan mapping folder jaringan menjadi sebuah drive letter (misalnya Z:).
Jika Anda melakukannya lewat File Explorer biasa, drive tersebut hanya akan muncul di akun user Anda dan gaib bagi System Account. Agar drive ini terbaca oleh service atau task scheduler, kita harus melakukan mapping di level sistem.
Untuk membuatnya terbaca oleh System Account secara permanen (persistent), jalankan perintah ini di dalam Command Prompt Administrator Anda:
Bash
net use Z: \\NAMA_SERVER\NAMA_FOLDER /persistent:yes
Alternatif Menggunakan PowerShell (Lebih Modern):
Jika Anda lebih nyaman dengan PowerShell, Anda bisa menggunakan perintah yang memiliki parameter lebih detail:
PowerShell
New-PSDrive -Name "Z" -PSProvider FileSystem -Root "\\NAMA_SERVER\NAMA_FOLDER" -Persist
Tabel Rangkuman: Mengapa Harus Kombinasi Keduanya?
| Langkah | Fungsi Utama | Apa yang Terjadi Jika Dilewatkan? |
| Add Credentials | Memberikan hak izin masuk (Authentication) ke komputer/server target. | Error Access is Denied atau Logon Failure. |
| Map Network Drive | Membuat jalan pintas berupa huruf drive (contoh: Z:) untuk menyederhanakan path data. | System Account harus selalu mengetik alamat panjang (\\server\folder\subfolder) yang terkadang tidak didukung oleh aplikasi lama. |
Tips Tambahan untuk Keamanan
- Gunakan Akun Khusus (Least Privilege): Jangan pernah memasukkan kredensial Domain Admin ke dalam System Account untuk urusan mapping ini. Buatlah satu user khusus di server target yang hanya memiliki akses baca/tulis ke folder tersebut.
- Skrip Otomatis saat Boot: Karena System Account terkadang bisa “lupa” setelah komputer restart keras, sangat disarankan untuk memasukkan perintah
net usedi atas ke dalam sebuah.batfile kecil yang dijalankan via Startup Script di Group Policy (GPO) atau Task Scheduler dengan trigger At Startup.
Dengan Skrip
Buat dua buah file berexstensi .ps1 dan .bat, untuk running buka file .bat
Save sebagai remount.bat
@echo off
title SMB Migration
powershell.exe -ExecutionPolicy Bypass -NoProfile -File "%~dp0Remount-NetworkDrives.ps1"
pauseSave sebagai Remount-NetworkDrives.ps1
Clear-Host
Write-Host "========================================="
Write-Host " SMB Drive Migration Tool"
Write-Host "========================================="
Write-Host ""
# =========================================
# REMOVE OLD MAPPINGS
# =========================================
$allDriveLetters = @(
"W","X","Y","Z",
"S","T","U","V",
"O","P","Q","R",
"G","H","I","J","K"
)
foreach ($drive in $allDriveLetters) {
cmd /c "net use $drive`: /delete /y" *> $null
}
cmd /c "net use * /delete /y" *> $null
# =========================================
# REMOVE OLD CREDENTIALS
# =========================================
$oldServers = @(
"192.168.16.10",
"192.168.16.11",
"192.168.16.12",
"192.168.16.13",
"192.168.16.14",
"192.168.16.15",
"192.168.16.16",
)
foreach ($server in $oldServers) {
cmdkey /delete:$server *> $null
}
Start-Sleep -Seconds 2
Write-Host "Old mappings and credentials cleaned."
Write-Host ""
# =========================================
# LOGIN
# =========================================
Write-Host "Use username format:"
Write-Host "DOMAIN\namadepan.namabelakang"
Write-Host ""
Write-Host "Example:"
Write-Host "DOMAIN\namadepan.namabelakang"
Write-Host ""
$username = Read-Host "Enter username"
$password = Read-Host "Enter password" -AsSecureString; [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password))
# =========================================
# MENU
# =========================================
Write-Host ""
Write-Host "Select drives to map:"
Write-Host ""
Write-Host "1 = ARS"
Write-Host "2 = INFRA"
Write-Host "3 = STR"
Write-Host "4 = IT"
Write-Host "5 = RQM"
Write-Host "6 = Keuangan"
Write-Host "7 = Human Capital"
Write-Host "8 = Umum"
Write-Host "9 = ARS Multidicipline"
Write-Host "10 = INFRA Multidicipline"
Write-Host "11 = STR Multidicipline"
Write-Host ""
$selection = Read-Host "Example: 1,5,10"
$choices = $selection.Split(",") | ForEach-Object { $_.Trim() }
$driveMappings = @()
foreach ($choice in $choices) {
switch ($choice) {
"1" {
$driveMappings += @{ Letter="W"; Domain="fs-ars.local.lan"; Path="\\fs-ars.local.lan\Ars - Project" }
$driveMappings += @{ Letter="X"; Domain="fs-ars.local.lan"; Path="\\fs-ars.local.lan\Ars - Marketing" }
$driveMappings += @{ Letter="Z"; Domain="fs-ars.local.lan"; Path="\\fs-ars.local.lan\Ars - Archive" }
}
"2" {
$driveMappings += @{ Letter="S"; Domain="fs-infra.local.lan"; Path="\\fs-infra.local.lan\Infra - Project" }
$driveMappings += @{ Letter="T"; Domain="fs-infra.local.lan"; Path="\\fs-infra.local.lan\Infra - Marketing" }
$driveMappings += @{ Letter="V"; Domain="fs-infra.local.lan"; Path="\\fs-infra.local.lan\Infra - Archive" }
}
"3" {
$driveMappings += @{ Letter="O"; Domain="fs-str.local.lan"; Path="\\fs-str.local.lan\Str - Project" }
$driveMappings += @{ Letter="P"; Domain="fs-str.local.lan"; Path="\\fs-str.local.lan\Str - Marketing" }
$driveMappings += @{ Letter="R"; Domain="fs-str.local.lan"; Path="\\fs-str.local.lan\Str - Archive" }
}
"4" {
$driveMappings += @{ Letter="G"; Domain="fs-ssu.local.lan"; Path="\\fs-ssu.local.lan\IT" }
}
"5" {
$driveMappings += @{ Letter="H"; Domain="fs-ssu.local.lan"; Path="\\fs-ssu.local.lan\RQM" }
}
"6" {
$driveMappings += @{ Letter="I"; Domain="fs-ssu.local.lan"; Path="\\fs-ssu.local.lan\Keuangan" }
}
"7" {
$driveMappings += @{ Letter="J"; Domain="fs-ssu.local.lan"; Path="\\fs-ssu.local.lan\Human Capital" }
}
"8" {
$driveMappings += @{ Letter="K"; Domain="fs-ssu.local.lan"; Path="\\fs-ssu.local.lan\Umum" }
}
"9" {
$driveMappings += @{ Letter="Y"; Domain="fs-ars.local.lan"; Path="\\fs-ars.local.lan\Ars - Multidicipline" }
}
"10" {
$driveMappings += @{ Letter="U"; Domain="fs-infra.local.lan"; Path="\\fs-infra.local.lan\Infra - Multidicipline" }
}
"11" {
$driveMappings += @{ Letter="Q"; Domain="fs-str.local.lan"; Path="\\fs-str.local.lan\Str - Multidicipline" }
}
}
}
# =========================================
# MAP DRIVES
# =========================================
Write-Host ""
Write-Host "Mapping selected drives..."
Write-Host ""
foreach ($map in $driveMappings) {
$letter = $map.Letter
$domain = $map.Domain
$path = $map.Path
$mpass = [System.Net.NetworkCredential]::new("",$password).Password
cmdkey.exe /add:$($domain) /user:$($username) /pass:$($mpass)
Write-Host "Connecting $letter`: -> $path"
New-PSDrive -Name $letter -PSProvider FileSystem -Root $path -Persist -Scope Global
Write-Host ""
}
Write-Host "Done."
Write-Host ""
pauseSekarang, background service atau aplikasi otomatisasi Anda sudah bisa menjelajah folder jaringan dengan lancar tanpa terhalang tembok Access Denied!
Author Profile
- Hi my name is Ricki, I am a blogger from Indonesia. Founder of erkamoo.com, Besides creating Web Applications, I also write about Blogging Tips and Tutorials on Programming, Databases, HTML.



