Создание приложения всегда запускается от имени другого пользователя

357
Kam

Я ищу альтернативу Runas.

Можно ли настроить ВСЕГДА РАБОТУ определенного приложения под другой учетной записью?

Это очень отличается от определения ярлыка, который запускается как бег (есть недостатки, которые я пытаюсь предотвратить).

Я хочу сказать системе, что если вы запускаете Nitro, он должен работать от имени другого пользователя.

Метод определения ярлыка не будет работать хорошо для меня, потому что тогда ему придется запустить ярлык, а затем перейти к файлу, и он потеряет способность просто дважды щелкнуть по PDF и Nitro автоматически откроет этот файл. pdf (я хочу продолжать иметь возможность автоматически открывать pdf, на котором пользователь дважды щелкнул, но он всегда должен запускаться от имени другого пользователя в Nitor - программе pdf по умолчанию).

Люди, не голосуйте против этого просто потому, что ответ может быть «Нет, это невозможно». Я думаю, что это может быть невозможно, но я был удивлен раньше (к моему удовольствию, и все же по-прежнему голосовал за то, что задал ценный вопрос). Если на это есть ответ, это будет очень ценно.

Я на самом деле использую Windows 7, но если это возможно на 10, то я рассмотрю обновление.

2

2 ответа на вопрос

0
harrymc

Я думаю, что поскольку это можно сделать, заменив исполняемый файл приложения на скрипт, который выполняет команду RunAs .

Это может быть любой сценарий или сценарий, скомпилированный как исполняемый файл и имеющий то же имя.

Если вы не хотите заменять исполняемый файл, вы можете написать дополнительный скрипт, такой как .batили, .cmdи поместить его в ту же папку, что и .exe. Здесь вы столкнетесь с проблемой Windows, предпочитающей запускаться .exeраньше этих типов.

Вы можете изменить порядок приоритета, изменив переменную среды PATHEXT, значение которой по умолчанию равно .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSCтак, чтобы повысить приоритет выбранного вами суффикса перед значением из .exe.

Информацию о PATHEXT смотрите в ответах answer1 и answer2 .

не уверен, что я следую я дважды щелкаю по PDF. я хочу, чтобы nitro запустил и открыл этот pdf, но запустите его как пользователь xyz. Вы хотите сказать, что я могу иметь командный файл, который будет запускаться при двойном щелчке по pdf, и этот командный файл примет путь к PDF-файлу, выбранному в качестве входного параметра? как это работает на практике? Это возможно? Можете ли вы предоставить небольшой пример кода? Kam 6 лет назад 0
Это означает, что вам нужно будет заменить нитро, и это повлияет на все ваши PDF-файлы. Не уверен, что ты имел в виду именно так. harrymc 6 лет назад 0
0
Wes Sayeed

Есть способ сделать это, но вы должны привыкнуть к взлому реестра. Я опишу это шаг за шагом:

  1. Запустите редактор реестра (regedit.exe) и разверните HKEY_CLASSES_ROOT. В этом ключе Windows записывает все ассоциации типов файлов и знает, какую программу открывать при двойном щелчке файла.
  2. Найдите ключ .pdf и запишите запись (по умолчанию) справа. Это будет имя идентификатора приложения, связанного с файлами PDF в вашей системе. У меня установлен Acrobat в моей системе, поэтому у меня написано AcroExch.Document.2017. Ваш может сказать что-то другое, если Nitro является программой по умолчанию для открытия PDF-файлов.

Screenshot showing the .PDF file association

  1. Прокрутите вниз, чтобы найти ключ с именем, которое вы указали выше. Обратите внимание, что мы все еще смотрим на HKEY_CLASSES_ROOT. Также обратите внимание, что, вероятно, будет много ключей с очень похожими именами. Вы должны точно соответствовать имени .
  2. Опустите этот ключ и перейдите в shell -> Open -> command, как показано ниже. Значение (по умолчанию) - это команда, которую Windows выполнит при открытии (т.е. двойном щелчке) файла.

Screenshot showing the Open command line

  1. Вы можете поставить здесь любую команду, какую захотите. Обратите внимание, что в моем примере команда показывает полный путь к файлу .EXE, за которым следует аргумент (имя файла):

    "C:\Program Files (x86)\Adobe\Acrobat Reader 2017\Reader\AcroRd32.exe" "%1" 

    В моей системе я бы изменил его на:

    runas /user:<user> "\"C:\Program Files (x86)\Adobe\Acrobat Reader 2017\Reader\AcroRd32.exe\" \"%1\"" 

    Где <user>будет имя учетной записи.

Вот и все. Вы можете закрыть редактор реестра, и все готово.

ОТМЕТЬТЕ кунг-фу, которое я имел к кавычкам в шаге 5. Это важно, чтобы вы поняли это правильно. Команда открыть PDF-файлы на моем компьютере больше не AcroRd32.exeсуществует runas.exe. Runas.exeпринимает только один аргумент - полную командную строку, которая будет выполнена, как если бы вы ввели ее из командной строки. Поскольку в этой строке есть пробелы, все это должно быть заключено в кавычки. И поскольку сама строка в кавычках также содержит кавычки (поскольку в имени файла могут быть пробелы), эти кавычки должны быть экранированы как строковые литералы.