2017-07-21 9 views
0

EDIT: Tried this: C:\WINDOWS\system32>runas /user:gabs-pc\gabs-pc "J:\TI\...\Editor_PDF\editor_pdf.exe"fichier ne peut pas exécuter en tant qu'administrateur mais OK si je lance en tant qu'utilisateur normal

Got this error: "The system could not fin the specified file."

assez difficile à exposer mon problème sur le titre du sujet ...

Eh bien ... J'ai un .exe fichier que je veux exécuter, ce fichier est dans un disque dur partagé via un réseau local appelé J: \.

Si j'ouvre l'invite de cmd en tant qu'utilisateur normal dans un chemin donné et je tente d'exécuter le fichier .exe à l'aide, par exemple:

"J:\TI\Estágio\gabriel\Editor de PDF\Editor PDF\editor_pdf.exe" param1 param2 param3 

Il fonctionne très bien. Mais quand je tente d'exécuter exactement le même fichier, à partir du même ordinateur ouvrant l'invite cmd en tant qu'administrateur, je reçois l'erreur suivante:

'"J:\TI...\Editor PDF\editor_pdf.exe"' is not recognized as an internal or external command, an operable program or a batch file.

Je voudrais savoir comment exécuter ce fichier en tant qu'administrateur ou solution de contournement d'une seule ligne pour exécuter ce fichier en tant qu'utilisateur actuel/normal.

Commentaires: Si certains d'entre vous se demandent "pourquoi ne pas simplement ouvrir cmd en tant qu'utilisateur normal?". J'essaye d'appeler ce programme d'un autre programme qui peut seulement exécuter cmd en tant qu'administrateur, c'est pourquoi.

+2

'ce fichier est un disque drive' partagé - lecteurs partagés est par utilisateur - utilisateur admin pas afficher les lecteurs partagés utilisateur normal et vice versa – RbMm

+0

L'administrateur local n'a pas les droits d'administrateur sur les fichiers réseau s'il s'agit d'un domaine Windows que vous devez disposer des droits d'administrateur de domaine –

Répondre

1

Vous devez d'abord convertir le chemin du lecteur réseau dans son chemin UNC réel. Comme le dit @RbMm, le lecteur réseau est une configuration par utilisation.

Si vous respectez cmd, vous pouvez utiliser wmic path win32_mappedlogicaldisk get DeviceID, ProviderName pour récupérer le chemin réel de la cible. Vous pouvez également utiliser WinapiWNetGetConnection pour récupérer le chemin du lecteur.

Le processus doit PAS être effectué dans le contexte Administrateur. Si vous ne pouvez pas, vous devez utiliser CreateProcessAsUser pour récupérer des informations du point de vue d'un autre utilisateur.

Code Pseudo:

char path[260] = {0}; 
WNetGetConncetion ("J:", path, 260); 
WinExec ("\"" + path + "\\TI\\Estágio\\gabriel\\Editor de PDF\\Editor PDF\\editor_pdf.exe" 
     + "\" " + param1 + " " + param2 + " " + param3, SW_HIDE); 

Informations complémentaires: