Terminal: Jalankan sebagai administrator

Dibuat pada 8 Jul 2019  ·  42Komentar  ·  Sumber: microsoft/terminal

2019-07-08_14h29_22
2019-07-08_14h29_54

Sepertinya ada masalah saat menjalankan terminal "Sebagai Administrator"

Kesalahan: Windows tidak dapat menemukan "C: \ Program Files \ WindowsApps \ Microsoft.WindowsTerminal_0.2.1831.0_x64__8wekyb3d8bbwe \ WindowsTerminal.exe" Pastikan Anda telah mengetik nama dengan benar, lalu coba lagi

Issue-Bug Needs-Tag-Fix Product-Terminal Resolution-External

Komentar yang paling membantu

Juga sebagai saran daripada menjalankan terminal SELURUH sebagai admin dari bilah tugas, mungkin punya alternatif?

Sebagai contoh:

Saat membuka tab baru, minta pengguna atau memiliki beberapa UI yang menanyakan apakah mereka ingin membuka instance baru sebagai administrator?
suggesstion

Atau cukup klik kanan pada terminal untuk membuka tab admin dari direktori yang sama persis. (Itu akan sangat berguna untuk powershell-core karena tidak memiliki fungsionalitas yang bagus seperti sudo)

Semua 42 komentar

@ DHowett-MSFT Saya berani bersumpah kami memiliki masalah duplikat duduk di suatu tempat untuk ini, tetapi saya tidak dapat menemukannya sekarang. Apakah Anda ingat apa yang menyebabkan ini?

Ahh man, maaf jika itu duplikat.

tidak ada alasan, mulai aplikasi dengan baik tetapi klik-r dan mulai sebagai admin gagal, jendela UAC meminta kata sandi admin dua kali maka Anda mendapatkan kesalahan.

Saya juga sedang mengalami masalah ini. Saya mencari terminal di bilah tugas
win-terminal-run-as-admin-issue-1

Kemudian saya diminta untuk memasukkan kredensial admin saya dua kali! Perintah admin satu demi satu. Kemudian ketika saya selesai memasukkan kredensial saya untuk kedua kalinya pesan kesalahan ini muncul:

win-terminal-run-as-admin-issue

Saya baru saja memasang terminal hari ini.

Versi Terminal:
Versi: 0.2.1831.0.0

Versi OS:
Windows 10 Pro
10.0.18362 Bentukan 18362

Juga sebagai saran daripada menjalankan terminal SELURUH sebagai admin dari bilah tugas, mungkin punya alternatif?

Sebagai contoh:

Saat membuka tab baru, minta pengguna atau memiliki beberapa UI yang menanyakan apakah mereka ingin membuka instance baru sebagai administrator?
suggesstion

Atau cukup klik kanan pada terminal untuk membuka tab admin dari direktori yang sama persis. (Itu akan sangat berguna untuk powershell-core karena tidak memiliki fungsionalitas yang bagus seperti sudo)

Dukungan Terminal Windows yang berjalan dalam mode admin mungkin bukan perilaku yang baik, yang berarti bahwa semua shell di tab lain yang dibuka dari Ctrl + T mungkin merupakan hak administrator. Sejauh yang saya tahu, Terminal Windows tidak menerapkan kode apa pun dari Administrator ke pengguna terbatas. Faktanya, kekurangan Windows adalah jenis implementasi hak istimewa yang tidak memerlukan interaksi UI, seperti sudo.

Tetapi menerapkan sudo juga bisa merepotkan. Alur kata kerja runas kira-kira sebagai berikut (jika ada yang salah, tolong ingatkan saya):

  1. AppInfo pergi dan berbicara dengan Otoritas Keamanan Lokal untuk mendapatkan token yang ditingkatkan dari pengguna yang masuk di Sesi 1.
  2. AppInfo memuat struktur STARTUPINFOEX (baru di Vista), dan memanggil Vista API yang baru InitializeProcThreadAttributeList () dengan ruang untuk satu atribut.
  3. OpenProcess () dipanggil untuk menangani proses yang memulai panggilan RPC.
  4. UpdateProcThreadAttribute () dipanggil dengan PROC_THREAD_ATTRIBUTE_PARENT_PROCESS , dan menggunakan pegangan yang diambil pada langkah 3.
  5. CreateProcessAsUser () dipanggil dengan EXTENDED_STARTUPINFO_PRESENT dan hasil dari langkah 1 dan 4.
  6. DeleteProcThreadAttributeList () dipanggil.
  7. Hasil dikumpulkan, dan gagang dibersihkan.

Kita bisa menarik kesimpulan sederhana. Faktanya, runas sebenarnya adalah proses normal yang memulai permintaan RPC ke proses dengan hak istimewa tinggi. Proses hak istimewa tinggi (layanan AppInfo) membuat proses Administrator dan menetapkan proses induknya sebagai proses normal.

AppInfo saat ini tidak mendukung penyiapan direktori kerja, masukan dan keluaran (meskipun memanggil CreateProcessAsUser) saat meluncurkan proses administrator. Ini adalah masalah yang perlu diselesaikan agar dukungan sudo dapat berjalan di Terminal Windows. (ShellExecuteEx SEE_MASK_NO_CONSOLE tidak berfungsi)

SHELLEXECUTEINFOW :

typedef struct _SHELLEXECUTEINFOW {
  DWORD     cbSize;
  ULONG     fMask;
  HWND      hwnd;
  LPCWSTR   lpVerb;
  LPCWSTR   lpFile;
  LPCWSTR   lpParameters;
  LPCWSTR   lpDirectory;
  int       nShow;
  HINSTANCE hInstApp;
  void      *lpIDList;
  LPCWSTR   lpClass;
  HKEY      hkeyClass;
  DWORD     dwHotKey;
  union {
    HANDLE hIcon;
    HANDLE hMonitor;
  } DUMMYUNIONNAME;
  HANDLE    hProcess;
} SHELLEXECUTEINFOW, *LPSHELLEXECUTEINFOW;

Lihat: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-updateprocthreadattribute

| Nilai | Arti |
| --- | --- |
| PROC_THREAD_ATTRIBUTE_PARENT_PROCESS | Parameter lpValue adalah penunjuk ke pegangan ke proses yang akan digunakan sebagai pengganti proses panggilan sebagai induk untuk proses yang sedang dibuat. Proses untuk menggunakan harus memiliki hak akses PROCESS_CREATE_PROCESS.

Atribut yang diwarisi dari proses yang ditentukan termasuk pegangan, peta perangkat, afinitas prosesor, prioritas, kuota, token proses, dan objek pekerjaan. (Perhatikan bahwa beberapa atribut seperti port debug akan berasal dari proses pembuatan, bukan proses yang ditentukan oleh pegangan ini.) |

Ini jelas merupakan masalah platform windows. Saya menugaskan diri saya sendiri untuk menindaklanjuti dengan tim yang memilikinya dan menutupnya. Terima kasih.

Saya suka proposal @ YMba9g8j9CJp0wLoQf5y untuk mengotorisasi tab dengan hak istimewa yang ditingkatkan. Saya dari ConEmu di mana kita dapat membuat tab dengan atau tanpa hak istimewa admin. Saat membuat tab admin saya akan diminta dengan UAC (untuk kebaikan).

Bukankah ini hanya perilaku normal dari aplikasi toko Windows? Sepertinya aplikasi Pratinjau baru saja dirilis.
Tapi saya memang membutuhkan cara untuk menjalankan cangkang yang ditinggikan. Tampaknya tidak mungkin untuk melakukan itu hari ini (buka tab sebagai admin).

Hei, kami tidak yakin ada yang bisa kami lakukan tentang ini. Maukah Anda mengajukan masukan dalam kategori "Platform Pengembang> Penerapan Aplikasi"? Itu akan membantu mengarahkannya ke tim yang tepat, dan mengumpulkan beberapa informasi diagnostik yang sangat berguna.

Menghubungkan: ini juga # 1538

Padahal saya setuju dengan keputusan itu. Itu membuatnya sangat menyakitkan untuk menggunakan chocolatey tanpa secara eksplisit dijalankan dalam mode admin. (

@musm Saya hanya memiliki ini di konfigurasi PowerShell 6 saya:

function GoAdmin { start-process pwsh –verb runAs }

(ganti pwsh dengan powershell jika Anda menggunakan PowerShell lama)

Jadi, kapan pun saya perlu menginstal / memperbarui paket melalui chocolatey, saya mengetik GoAdmin (di PowerShell yang dihosting Terminal Windows), yang membawa saya ke jendela Admin PowerShell yang terpisah. Di sana saya bisa menjalankan semua perintah admin cokelat. Kemudian saya cukup menutup jendela admin, dan mengetik refreshenv di sesi Terminal Windows saya untuk memperbarui semua variabel PATH. Sangat mudah.

Saya pasti ingin cara untuk meluncurkan wt (Terminal Windows) daripada langsung pergi ke pwsh "telanjang", tetapi itu tampaknya tidak mungkin. Tapi itu keluhan kecil. Meh. :-)

Saya masih mendapatkan kesalahan ketika saya ingin memulai WT (0.9.433.0) sebagai admin:

image

Terjadi di beberapa mesin, dengan WT dan Windows terbaru (v10.0.18363.657).
Tidak begitu mengerti mengapa masalah ini ditutup dan apa solusinya.

Sebenarnya itu tidak pernah berhasil, komentar terakhir yang saya dapatkan adalah, ini adalah masalah Windows dan mereka akan menyampaikannya kepada tim.

mereka akan meningkatkannya bersama tim.

Saya rasa tidak. Ini lebih seperti " Anda harus meningkatkannya dengan tim".

Saya yakin mereka tidak berpikir untuk merilis Win Terminal v1 dengan salah satu fungsi terpenting rusak.
Sayang sekali karena itu membuat versi pra-rilis WT tidak dapat digunakan.

Ini akan memunculkan jendela PowerShell baru dengan administrator. Tidak persis seperti yang kita inginkan tetapi ini adalah solusi. Buat profil baru dengan baris perintah berikut.

"commandline": "powershell.exe -Command \"Start-Process powershell.exe -Verb RunAs\"",

Mengapa ini ditutup? Masih perlu ada fitur tab elevate.

Ini dilacak dalam banyak masalah lain di repositori ini, itulah sebabnya.

@ DHowett-MSFT Terima kasih. Masalah apa yang harus kita ikuti? Saya tidak berpikir itu disebutkan di atas.

@musm Saya hanya memiliki ini di konfigurasi PowerShell 6 saya:

function GoAdmin { start-process pwsh –verb runAs }

(ganti pwsh dengan powershell jika Anda menggunakan PowerShell lama)

Jadi, kapan pun saya perlu menginstal / memperbarui paket melalui chocolatey, saya mengetik GoAdmin (di PowerShell yang dihosting Terminal Windows), yang membawa saya ke jendela Admin PowerShell yang terpisah. Di sana saya bisa menjalankan semua perintah admin cokelat. Kemudian saya cukup menutup jendela admin, dan mengetik refreshenv di sesi Terminal Windows saya untuk memperbarui semua variabel PATH. Sangat mudah.

Saya pasti ingin cara untuk meluncurkan wt (Terminal Windows) daripada langsung pergi ke pwsh "telanjang", tetapi itu tampaknya tidak mungkin. Tapi itu keluhan kecil. Meh. :-)

Di windows di mana file konfigurasi ini berada?

@ mian-muhammad Saya rasa yang dia maksud adalah profil PowerShell. https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles

Saya menemukan solusi. Anda dapat menggunakan chocolatey untuk menginstal paket bernama sudo (choco install -y sudo). Kemudian Anda bisa menggunakan sudo seperti yang diharapkan.

Sepertinya saat ini saya dapat membuka terminal sebagai administrator; setidaknya itu bekerja di mesin saya. Akan lebih baik lagi jika kita dapat membuat tab sebagai administrator seperti ConEmu (yang dibahas di # 632), tetapi saat ini tidak ada gunanya membuka kembali masalah ini.

Permintaan fitur tertunda terkait lainnya:

  • # 146 sudo yang mungkin menarik bagi @ Pens99
  • # 576 jumplist bilah tugas; Saya menganggap ini sebagai substitusi # 632 karena implikasi keamanan (yang saya pahami sepenuhnya berasal dari industri keamanan), terutama bila digabungkan dengan # 3246.

Semoga ini membantu semua orang yang mengikuti utas ini.

@ DHowett-MSFT Masalah manakah yang harus kita ikuti dan beri bintang untuk menyelesaikannya? Satu-satunya masalah referensi lain yang dapat saya lihat adalah # 1538 yang juga ditutup.

Saya yakin pendirian Microsoft tidak mungkin bahwa setiap orang harus memiliki hak administratif pada pengguna standar mereka daripada menggunakan akun admin terpisah jika mereka ingin menggunakan aplikasi Windows modern. Ini bagaimanapun juga bertentangan dengan praktik keamanan standar.

@danstur Terbaik yang bisa saya tawarkan untuk perhatian itu adalah # 4217. Kami sedang mengupayakan perbaikan dengan tim yang memiliki penerapan aplikasi. Masalahnya adalah aplikasi _installed_ secara global, tetapi hanya terdaftar per pengguna. Ini adalah beberapa infrastruktur yang dibangun untuk Windows 8 yang hanya berkembang sangat lambat untuk mendukung bahkan menjalankan aplikasi win32 standar seperti Terminal. # 1386 melacak kita keluar dari paket dan mendistribusikannya sebagai sesuatu yang lebih tradisional untuk pelanggan perusahaan dan orang-orang yang mengalami masalah dengan mesin penerapan paket.

@ DHowett-MSFT Terima kasih atas masalah ini, senang mendengarnya dilacak.

Untuk memperjelas: Jika saya menginstal aplikasi melalui opsi yang disebutkan di # 1386, apakah saya kemudian dapat menjalankannya sebagai pengguna yang berbeda atau apakah itu masih tidak berfungsi? Saya tidak keberatan harus mendaftarkan aplikasi (apakah itu berarti menjalankan Add-AppxPackage ?) Dengan pengguna lain.

@ DHowett-MSFT Dustin Howett FTE Terima kasih atas masalahnya, senang mendengarnya dilacak.

Untuk memperjelas: Jika saya menginstal aplikasi melalui opsi yang disebutkan di # 1386, apakah saya kemudian dapat menjalankannya sebagai pengguna yang berbeda atau apakah itu masih tidak berfungsi? Saya tidak keberatan harus mendaftarkan aplikasi (apakah itu berarti menjalankan Add-AppxPackage ?) Dengan pengguna lain.

Itu seharusnya bekerja dengan baik. Anda harus Add-AppxPackage sebagai pengguna tersebut, ya. :tersenyum:

Senang melihat ini ditempel.

Ini perlu diselesaikan, seperti sekarang di lingkungan Windows yang diatur dengan akun admin dan pengguna terpisah (sebagaimana mestinya) terminal tidak dapat digunakan untuk admin jika diinstal dari MS Store (disarankan)

Senang melihat ini ditempel.

Ini perlu diselesaikan, seperti sekarang di lingkungan Windows yang diatur dengan akun admin dan pengguna terpisah (sebagaimana mestinya) terminal tidak dapat digunakan untuk admin jika diinstal dari MS Store (disarankan)

Solusi yang berhasil untuk saya adalah masuk sebagai pengguna admin di mesin lokal dan "menginstal" lagi terminal dari Store. Kemudian, ketika masuk sebagai pengguna standar, saya dapat menjalankan terminal sebagai administrator

Ya, masalahnya tampaknya Store mendaftarkan aplikasi hanya untuk pengguna saat ini. Itu bagus untuk sebagian besar aplikasi (sebenarnya begitulah sebagian besar aplikasi harus dipasang) tetapi tidak baik untuk aplikasi administratif seperti terminal.

Hai masa depan saya: masalah pendaftaran toko sedang dilacak secara internal dengan MSFT: 20356613 dan dibahas panjang lebar di # 4217

Halo,
Saya mengalami masalah ini juga di akun biasa saya. Solusinya adalah menginstal aplikasi Terminal lagi saat masuk ke akun administrator. Kemudian Anda akan dapat menjalankan sebagai admin di akun reguler Anda.

Sama disini. masalah sepertinya belum terpecahkan

Saya memiliki solusi lain yang kurang sempurna yang tidak memungkinkan membuka _tab_ berjalan sebagai administrator, tetapi itu memungkinkan membuka jendela PowerShell sebagai Administrator dari tab (non-admin) yang ada:

https://github.com/jt-github/elevate

Ini bekerja dengan cara yang sama seperti menambahkan profil seperti yang disarankan oleh @CraigHead di atas:
"commandline": "powershell.exe -Command \"Start-Process powershell.exe -Verb RunAs\"",

Kecuali bahwa versi saya dijalankan dengan menjalankan perintah elevate .

@ jt-gub. Itu seperti sudo.

Lihat di sini: https://github.com/pldmgg/Sudo

Tepatnya, hanya sudo yang jauh lebih keren dari milikku tapi milikku sangat sederhana sehingga mudah untuk dipahami dan digunakan.

Seperti banyak dari Anda, saya juga mengalami masalah ini, jadi saya membuat fungsi berikut untuk membuka shell Admin dari PowerShell.exe, pwsh.exe atau terminal Microsoft


# Function        Test-IsAdmin
function Test-IsAdmin {
    <#
    .Synopsis
    Tests if the user is an administrator
    .Description
    Returns true if a user is an administrator, false if the user is not an administrator
    .Example
    Test-IsAdmin
    #>
    $identity = [Security.Principal.WindowsIdentity]::GetCurrent()
    $principal = New-Object Security.Principal.WindowsPrincipal $identity
    $principal.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}


# Function        New-AdminShell
function New-AdminShell {
    <#
    .Synopsis
    Starts an Elevated PowerShell Console.

    .Description
    Opens a new PowerShell Console Elevated as Administrator. If the user is already running an elevated
    administrator shell, a message is displayed in the console session.

    .Example
    New-AdminShell

    #>

    $Process = Get-Process | Where-Object { $_.Id -eq "$($PID)" }
    if (Test-IsAdmin = $True) {
        Write-Warning -Message "Admin Shell already running!"
    }
    else {
        if ($Process.Name -eq "powershell") {
            Start-Process -FilePath "powershell.exe" -Verb runas -PassThru
        }
        if ($Process.Name -eq "pwsh") {
            Start-Process -FilePath "pwsh.exe" -Verb runas -PassThru
        }
    }
}

# Function        New-AdminTerminal
function New-AdminTerminal {
    <#
    .Synopsis
    Starts an Elevated Microsoft Terminal.

    .Description
    Opens a new Microsoft Terminal Elevated as Administrator. If the user is already running an elevated
    Microsoft Terminal, a message is displayed in the console session.

    .Example
    New-AdminShell

    #>

    if (Test-IsAdmin = $True) {
        Write-Warning -Message "Admin Shell already running!"
    }
    else {
        Start-Process "wt.exe" -ArgumentList "-p pwsh" -Verb runas -PassThru
    }
}

Saya harap seseorang menganggapnya berguna. Saya telah menambahkannya ke Profil PowerShell saya, sehingga selalu tersedia.

Halo,
Saya mengalami masalah ini juga di akun biasa saya. Solusinya adalah menginstal aplikasi Terminal lagi saat masuk ke akun administrator. Kemudian Anda akan dapat menjalankan sebagai admin di akun reguler Anda.

Ini bekerja untuk saya juga, sangat menjengkelkan tetapi pada jaringan perusahaan itulah satu-satunya cara yang berhasil untuk saya. Jika Anda tidak memiliki admin lokal, aplikasi ini cukup gagal untuk privat tinggi di jaringan perusahaan.

Senang melihat ini ditempel.
Ini perlu diselesaikan, seperti sekarang di lingkungan Windows yang diatur dengan akun admin dan pengguna terpisah (sebagaimana mestinya) terminal tidak dapat digunakan untuk admin jika diinstal dari MS Store (disarankan)

Solusi yang berhasil untuk saya adalah masuk sebagai pengguna admin di mesin lokal dan "menginstal" lagi terminal dari Store. Kemudian, ketika masuk sebagai pengguna standar, saya dapat menjalankan terminal sebagai administrator

Nah, itu tidak berhasil untuk saya :(

Jadi saya menemukan jawabannya.

Anda harus menginstalnya di KEDUA akun administrator dan juga di akun utama, tetapi juga akun administratif harus masuk agar dapat berfungsi. Maksud saya, komputer harus masuk ke administrator, lalu beralih pengguna (bukan keluar) dan masuk ke akun lain. Ini akan memungkinkan aplikasi berjalan dalam mode administrator.

Saya menduga aplikasi toko yang dipasang di kedua akun tidak dapat dijalankan sebagai administrator kecuali akun administrator masuk.

Jadi saya menemukan jawabannya.

Anda harus menginstalnya di KEDUA akun administrator dan juga di akun utama, tetapi juga akun administratif harus masuk agar dapat berfungsi. Maksud saya, komputer harus masuk ke administrator, lalu beralih pengguna (bukan keluar) dan masuk ke akun lain. Ini akan memungkinkan aplikasi berjalan dalam mode administrator.

Saya menduga aplikasi toko yang dipasang di kedua akun tidak dapat dijalankan sebagai administrator kecuali akun administrator masuk.

Ini berhasil untuk saya. 👍

Apakah halaman ini membantu?
0 / 5 - 0 peringkat