web-dev-qa-db-ja.com

管理者モードでファイルを編集用に開く方法は?

.configファイルをNotepad ++で開くように設定しました。私が編集するファイルは通常保護された場所(例:c:\ windows \、c:\ program files ...など)にあり、管理者アクセスが必要です。

私は.configファイルをダブルクリックして管理者権限でNotepad ++を開くことができるようにしたいです。 UACプロンプトが表示されても大丈夫です。

それをする方法はありますか?

49
AngryHacker

最善の方法は、Notepad ++がインストールされているフォルダ(32ビットWindows用のProgram Filesおよび64ビットWindows用のProgram Files(x86))に直接移動し、Notepad ++実行可能ファイルを見つけて右クリックして選択することです。互換性、一番下の[管理者として実行]のチェックボックスをオンにします。

これはあなたのアプリケーションが常にUACの警告を表示するようにしますが、あなたは常に管理者として編集することができます。

がんばろう!

53
akseli

[スタート]メニューでエディタプログラム(例:Notepad ++)を検索してから、次のように入力します。 Ctrl+Shift+Enter 管理者としてプログラムを実行できます。

これで、昇格した特権を必要とするファイルを開いて編集できるはずです。

19
elolos

@ Askeliの答え を改良したものとして、最初にnotepad ++実行ファイルのコピーを作成することができます(NotepadUACのような名前を付けます)。次に、Askeliの指示に従って、コピーのプロパティで互換モードを管理者モードに設定します。これで、オリジナルではなくコピーを使用して開くように.configファイルを設定できるようになります。

ここでの利点は、元の(デフォルトの)Notepad ++ .exeファイルでファイルを開くときにUACプロンプトが表示されないことです。不利な点は、このコピーが必ずしもオリジナルと同じ方法で最新の状態に保たれるわけではなく、最終的には一致しない.dllまたはconfigのバージョンに問題が生じる可能性があることです。しかし、それが起こるならアンインストール/再インストールすることは常に十分に簡単です。

12
Joel Coehoorn

私の解決策は、メモ帳++をタスクバーに固定することでした。システムファイルの編集に必要な場合は、それを右クリックし、[Notepad ++]をクリックして、[管理者として実行]をクリックします

システムファイルを常に編集している場合は、ショートカットを変更したりコピーを作成したりする他の解決策でも問題ありません。私は日常的にNotepad ++を使っていますが、毎日保護されたファイルを台無しにすることはありません。

10
Marlon

これは、元の質問が2010年に投稿されたときには利用できませんでしたが、2012年現在ではベストアンサーです(少なくとも私が考えているように):

nppSaveAsAdminをインストールします。

http://sourceforge.net/projects/nppsaveasadmin から:

このプラグインを使用すると、管理者として任意のファイルを保存できます。 Notepad ++で「保存」を押すだけで、このファイルをユーザーとして変更することが許可されていない場合は、Notepad ++によって管理者として保存されます。 Windows XP、Windows Vista、Windows 7、Windows 8がサポートされています。

"Save as admin"プラグインはNotepad ++ Plugin Managerから素早く簡単にインストールできます。 (プラグイン/プラグインマネージャ/プラグインマネージャの表示/利用可能。[管理者として保存]をチェックし、[インストール]をクリックします。)

Notepad ++は通常どおり実行され続け、完全な管理UACトークンを使用して実行する必要もありません。ただし、Notepad ++が、他の方法ではアクセスが許可されていないファイルを保存しようとしていることがわかった場合は、NppAdminAccess.exeに分岐します(UACプロンプトを表示します)。単に「はい」をクリックすると、あなたのファイルは管理者権限で保存されます。

6
ziesemer
  1. テキストエディタの.exeのコピーを同じプログラムファイルフォルダに作成し、「Admin」などの名前を付けます。
  2. 新しいexeを右クリックし、[プロパティ]、[互換性]、[特権レベル]、[このプログラムを管理者として実行する]の順にクリックします。
  3. デスクトップ/タスクバー/スタートメニューにこのexeファイルへのショートカットを作成します。
  4. 管理者として編集したいテキストファイル(またはそのショートカット)をこのショートカットにドラッグします。

Web開発のためにhostsファイルを編集しなければならないときにこれを行うことを私が見つけた最も簡単で最も柔軟な方法です。もちろん、Joelの提案に従って、1つの拡張子のファイルをすべてadminとして開きたい場合は、作成したコピーに「open with ...」 - >「Choose default program」を使用することができます。

2
Brad

最善の方法は、Notepad ++を管理者として実行するように設定することです。それに関する問題はそれが右クリックオプションを壊すということです。だから私は古いものを削除する右クリックのオプションに代わるものを作りました。私の修正のいいところは、レジストリのディレクトリ設定に追加したことです。そのため、フォルダを右クリックして[Edit with Notepad ++]を選択すると、すべてのファイルがNotepad ++ :)で開きます。私は多くのVBScriptプログラミングをしています。それは私が何かをするか、またはオブジェクトを変更する新しい方法を思いついたときに私が大域的な変更をするすべての私のファイルを編集することを容易にします。

私のVBScriptはそれがそれらを変更する前にレジストリキーをバックアップします。 Notepad ++を管理者として設定していないため、Notepad ++実行可能ファイルを右クリックして管理者として実行するように変更する必要があります。これを管理者として実行にする方法について調査し始めています。それが思いついたとき、私は自分の投稿を編集するので、管理者として編集するか通常編集するかを選択できます。

'==========================================================================================
' NAME:   New-OpenWithNotepad++(WinVista7).vbs
' EDITED:  Kevin Dondrea , Gordos-Dondrea Enterprises and Foundation
' DATE  : 8/12/2012
' COMMENT: This script Exports Registry keys and replaced Notepad++ Right Click options.
'   Works with Windows Vista and 7.  Also works for restricted Win XP accounts.
' WEB LINK:  
'==========================================================================================

Option Explicit

' =============== START ADD ADMIN RIGHTS ===============
' This adds the Admin Run Function for Windows Vista and 7
' You must put this at the top below computer and End If at the
' very end of the script
If WScript.Arguments.length = 0 Then
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "WScript.exe", """" & _
WScript.ScriptFullName & """" &_
" RunAsAdministrator", , "runas", 1
Else
' Do not forget to add End If at the end of the script
' =============== END ADD ADMIN RIGHTS ===============

On Error Resume Next

' =============== START CONSTANT VARIABLES ===============
Const HKEY_CLASSES_ROOT   = &H80000000
Const HKEY_CURRENT_USER   = &H80000001
Const HKEY_LOCAL_MACHINE  = &H80000002
Const HKEY_USERS          = &H80000003
' =============== END CONSTANT VARIABLES ===============

' =============== START DIM VARIABLES ===============
Dim objFSO, objWrite2File, objShell, objReg, objRegistry, objWshShell
Dim strDate, strTime, strTime2, strFileName, strOpenFile
Dim strComputer, strCommand, strHostName, strUserName
Dim intRC, strKeyPath, strValueName, strValue
' =============== END DIM VARIABLES ===============

' --------------------------------------------------------------------------

' =============== START COMPUTER NAME, TIME and DATE ===============
strComputer = "."

' Reads registry for Computer Name
Set objShell = CreateObject("WScript.Shell")
' Edit or Add with Registrry Object
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
strComputer & "\root\default:StdRegProv")

' Same as above but used only to delete registry key
Set objRegistry=GetObject("winmgmts:\\" & _ 
strComputer & "\root\default:StdRegProv")

strHostName = objShell.RegRead ("HKLM\SYSTEM\CurrentControlSet\Services\" & _
        "Tcpip\Parameters\Hostname")
strUserName = objShell.RegRead ("HKLM\SOFTWARE\Microsoft\Windows NT\" & _
        "CurrentVersion\Winlogon\DefaultUserName")

' Retreives Date and Time
strTime = Right("0" & Hour(now()), 2) & Right("00" & _ 
    Minute(Now()), 2) & Second(Now())
strTime2 = Right("0" & Hour(now()), 2) & ":" & Right("00" & ":" & _ 
    Minute(Now()), 2) & ":" & Second(Now())
strDate = Right("0" & Month(now()), 2) & "-" & Right("00" & _ 
    Day(Now()), 2) & "-" & Year(Now())
' -----------------------------------------------------------

' =============== START BACKUP OF REGISTRY KEYS USED FOR ===============

' Original Command
' strCommand = "regedit /e <FilePath> <RegKey>"

' Local Machine ......
strCommand = "regedit /e " & strHostName & "-" & strDate & "-" & _ 
strTime & "-BackupLM-Notepad++.reg " & _ 
"""HKEY_LOCAL_MACHINE\SOFTWARE\Classes" & _ 
"\CLSID\{00F3C2EC-A6EE-11DE-A03A-EF8F55D89593}"""

Set objWshShell = WScript.CreateObject("WScript.Shell")
intRC = objWshShell.Run(strCommand, 0, TRUE)
If intRC <> 0 then
 WScript.Echo "Error returned from exporting Registry: " & intRC
Else
 WScript.Echo "No errors returned from exporting the Registry file"
End If
' =============== END BACKUP OF REGISTRY KEYS USED FOR ===============

' -----------------------------------------------------------

' =============== START NEW OPEN * Shell COMMAND ===============
' Name of Registry Entry Key\Path
strKeyPath = "*\Shell\Edit With Notepad++\command"
objReg.CreateKey HKEY_CLASSES_ROOT,strKeyPath

' Name of Registry Entry String
strValueName = ""
strValue = "C:\progra~1\notepad++\notepad++.exe %1"
objReg.SetStringValue HKEY_CLASSES_ROOT,strKeyPath,NULL,strValue

' =============== START NEW OPEN DIRECTORY Shell COMMAND ===============
' Name of Registry Entry Key\Path
strKeyPath = "Directory\Shell\Edit With Notepad++\command"
objReg.CreateKey HKEY_CLASSES_ROOT,strKeyPath

' Name of Registry Entry String
strValueName = ""
strValue = "C:\progra~1\notepad++\notepad++.exe %1"
objReg.SetStringValue HKEY_CLASSES_ROOT,strKeyPath,NULL,strValue

' -----------------------------------------------------------

strKeyPath = "*\shellex\ContextMenuHandlers\ANotepad++"
objRegistry.DeleteKey HKEY_CLASSES_ROOT,strKeyPath

strKeyPath = "SOFTWARE\Classes\CLSID\{00F3C2EC-A6EE-11DE-A03A-EF8F55D89593}\Settings"
objRegistry.DeleteKey HKEY_LOCAL_MACHINE,strKeyPath

' Ending Message
MsgBox"Notepad++ Right-Click Settings" & VbCrLf & _
"Have Been Created", ,"Click OK To Close Window"

' Cleans up Variables From Memory
Set objFSO = Nothing
Set objWrite2File = Nothing
Set objShell = Nothing
Set objReg = Nothing
Set objRegistry = Nothing
Set objWshShell = Nothing
Set strDate = Nothing
Set strTime = Nothing
Set strTime2 = Nothing
Set strFileName = Nothing
Set strOpenFile = Nothing
Set strComputer = Nothing
Set strCommand = Nothing
Set strHostName = Nothing
Set strUserName = Nothing
Set intRC = Nothing
Set strKeyPath = Nothing
Set strValueName = Nothing
Set strValue = Nothing

End If
1
Kevin

プラグインをアンインストールします(プラグインマネージャを除く)。これで問題は解決しました。一度に1つのプラグインをインストールして、どのプラグインが問題を引き起こしているかを確認できます。

次の解決策は実際にはダブルクリックのシナリオを考慮に入れていません、しかしそれはあなたに選択の力を与えます(そして技術的にはそれも2クリックです):

「管理者として実行」メニュー項目をファイルの種類ごとに(またはプログラムごとに)シェルのコンテキストメニューに追加できます。レジストリTweakの詳細については この記事 をご覧ください。

1
ctusch

シンプルで効果的な方法:

  1. デスクトップにショートカットを作成します(c:\ program files\notepad ++\notpad ++。exe->右クリック-> sendto-> desktop)
  2. そのショートカットのコピーを作成し、_ADMINをショートカットに追加します
  3. _ADMINショートカットを右クリック-プロパティ-ショートカット-詳細ボタン-「管理者として実行」にチェックマークを付けます
  4. ファイルエクスプローラーを開き、「Shell:sendto」と入力します
  5. 両方のショートカットを開いたフォルダーにドラッグアンドドロップします

これで、任意のファイルの「SendTo」リストにnotepad ++とnotepad ++ _ ADMINの両方が追加されました。

Shell contextmenu

0
Bernhard

別の解決策は「スタートメニュー」を開いてメモ帳アプリケーションを検索してそれを右クリックすることです。次に、[管理者として実行]をクリックします。

編集したいファイルのファイルシステムを( "Notepad/File/Open ..."で)参照できるようになりました。

0
Jérôme