Sans Windows restrictions d'autorisation sur le dossier program files
J'ai fait une petite application en C. Il fait un peu de manipulation de fichiers, essentiellement des recherches et des modifications de certains noms de fichiers. Mais s'il est utilisé dans Win Vista/7 dans le dossier program files le programme dit de refus d'autorisation. Est-il de toute façon de contourner cela?
Aussi, peut Java contourner cela?
Demander comment contourner les restrictions de sécurité est le moyen le plus rapide pour obtenir mon downvote. Heck, si votre application est bien comporté, vous êtes censé jouer avec le système, de ne pas jouer contre elle, et si les Acl ont été conçus pour être contournée qu'ils ne serait pas créé à tous les.
Je suis désolé pour la confusion, mais ce n'est pas ce que je voulais dire. Ce que je veux de dérivation est la nécessité de "Exécuter en tant qu'Administrateur" même si vous êtes dans le menu d'administration de l'acc. Vous voyez, l'UAC suce, de la sorte que même si vous êtes administrateur, vous avez à exécuter des trucs comme admin. Donc, le problème qui va comme ceci: j'ai un fichier exe qui est appelé à partir d'un fichier bat. Tout devrait bien se passer si vous êtes admin, mais il ne le fait pas. Vous devez cocher la case "Exécuter en tant qu'administrateur" sur le fichier exe propriétés. C'est ce que j'ai envie de les contourner.
Je suis désolé pour la confusion, mais ce n'est pas ce que je voulais dire. Ce que je veux de dérivation est la nécessité de "Exécuter en tant qu'Administrateur" même si vous êtes dans le menu d'administration de l'acc. Vous voyez, l'UAC suce, de la sorte que même si vous êtes administrateur, vous avez à exécuter des trucs comme admin. Donc, le problème qui va comme ceci: j'ai un fichier exe qui est appelé à partir d'un fichier bat. Tout devrait bien se passer si vous êtes admin, mais il ne le fait pas. Vous devez cocher la case "Exécuter en tant qu'administrateur" sur le fichier exe propriétés. C'est ce que j'ai envie de les contourner.
OriginalL'auteur user295744 | 2010-07-02
Vous devez vous connecter pour publier un commentaire.
Il n'y aurait pas beaucoup de point pour les autorisations de fichier si elles peuvent être facilement contourné.
Vous pouviez l'ignorer, si vous avez écrit un pilote de noyau consulté les blocs de disque directement, mais alors vous devez être un Administrateur pour installer les pilotes du noyau de toute façon.
À la fin de la journée, le seul moyen de "contourner" les autorisations de fichier est à exécuter votre programme en tant qu'Administrateur.
OriginalL'auteur Dean Harding
N'avez pas de dérivation, utilisez "Application Data" de répertoire.
Fichiers de programme est conçu pour stocker les fichiers qui ne changent pas au cours de l'exécution de l'application. Fichiers qui y sont stockés ne doivent être modifiées que lors de l'installation/de mise à jour.
Fichiers à être modifié au cours de l'exécution de l'application (profils, réglages, etc.) doit être stocké "Application Data" répertoire dans le dossier utilisateurs.
Pour obtenir le chemin d'accès SHGetFolderPath fonction de passage:
CSIDL_APPDATA
- pour obtenir de l'utilisateur actuel "Application Data" annuaireCSIDL_COMMON_APPDATA
- pour obtenir tous les utilisateurs "Application Data" annuaire(et éventuellement)
CSIDL_LOCAL_APPDATA
- pour obtenir de l'utilisateur actuel "de l'Application Locale de Données" annuaire qui est conçu pour stocker les informations spécifiques à la machine locale qui ne peuvent pas être déplacés vers d'autres machines, en opposition à "Application Data" (aussi appelé "Itinérance des Données d'Application") où les fichiers peuvent être déplacés librement de machine à machine (c'est à dire que vous pouvez les conserver pendant à la réinstallation de l'OS).Si votre application ne vraiment besoin de modifier les Fichiers de Programme de répertoire, puis en demandant à l'utilisateur l'autorisation, c'est que ce que vous devriez faire. Vous pouvez donner à votre application particulière manifeste donc, il va essayer d'obtenir les droits d'administrateur à chaque fois qu'il est exécuté. Vous pouvez également obtenir des privilèges à la volée.
Si vous écrivez application spécifique difficilement interfère avec le système d'exploitation, alors vous pouvez créer un service (daemon). Chaque fois que le service est démarré, il va obtenir des privilèges donnés lors de l'inscription du service. Pour plus d'informations, voir "Dll, les Processus et les Threads -> les Services" sur MSDN
//EDIT
Vous pouvez aussi facilement créer un service .NET (C# est plus adapté). Service application peut communiquer avec le client demande écrite dans une autre langue. Mais pour s'inscrire à un service, vous aurez besoin des droits d'administrateur. Avec ce type d'application, vous devez tenir compte de toutes les questions de sécurité.
C'est à partir de Windows 2000 que les Utilisateurs normaux n'ont pas d'écrire droit sur les Fichiers de Programme et le dossier %windir%, ainsi que sur le répertoire racine du lecteur système, IIRC. Plus, je suis tout à fait sûr que les lignes directrices sur l'utilisation correcte du répertoire du profil utilisateur hiérarchie date de retour plus tôt NTs, depuis une utilisation correcte du répertoire de profil est fondamental pour que le profil de l'itinérance dans le domaine de l'environnement.
OriginalL'auteur adf88
Vous ne devriez pas le faire. Même si il existe un moyen, alors c'est un trou de sécurité, et sera corrigé par la suite.
Si votre logiciel est en cours d'exécution à partir de la non-admin compte, il devrait se comporter correctement, et ne essayez pas de jouer les dossiers système (changement de nom du fichier dans program files, c'est exactement cela, peut - être endommager le système). C'est le point de l'ensemble des autorisations et de la séparation entre l'utilisateur et à l'administrateur de programme en cours de fonctionnement du compte de l'utilisateur ne devrait pas être en mesure de corrompre ou détruire des fichiers système, sauf si l'administrateur l'autorise que.
Donc, si vous ne pouvez pas renommer les fichiers en raison d'autorisations, rapport "autorisation refusée" pour l'utilisateur. Permettre à l'utilisateur de gérer la situation. Silencieusement en contournant les autorisations (même si c'est possible) est extrêmement dangereux - finalement, un pas-très-vif utilisateur va tuer le système à l'aide de votre logiciel ET VOUS blâme pour ses problèmes.
OriginalL'auteur SigTerm
Comme beaucoup ont dit avant, vous ne devriez pas tenter de contourner les restrictions imposées par le Système d'Exploitation.
Si votre application a besoin de modifier des fichiers que seul l'Administrateur peut modifier, votre programme nécessite des privilèges d'Administrateur. Maintenant, si vous voulez à considérer, il est utile d'Api à élever une demande de privilèges.
Dans Vista/Win7/Server2k8, par exemple, vous pouvez utiliser le Contrôle de compte d'utilisateur.
Je ne suis pas en citant les Api ici car il y a différentes façons d'élever ou d'obtenir des privilèges à travers le contrôle de compte d'utilisateur. Une chose importante à noter est que l'UAC repose sur l'interaction de l'utilisateur pour l'octroi de cette, et c'est une chose positive 🙂
J'espère que cela va vous guider, ainsi que d'autres, à la bonne direction.
OriginalL'auteur jweyrich
Si vous demandez pour vous-même parce que vous voulez juste pour exécuter cette application, il y a beaucoup de choses que vous pouvez faire. Tout d'abord, vous pouvez désactiver le contrôle de compte d'utilisateur qui, comme nous tous d'accord, c'est une mauvaise idée. Mais personne n'a fait la liste de vos autres options:
OriginalL'auteur Kate Gregory
Juste complètement désactiver le contrôle de compte d'utilisateur. J'ai la mienne éteint, et je n'ai pas de problèmes de sécurité que ce soit depuis que je suis tout à fait prudent et ne pas exécuter une variété de programmes ou même de télécharger quoi que ce soit, d'un exécutable.
OriginalL'auteur chr1s
Hors-sujet new'ish réponse, mais j'ai besoin d'un endroit pour enregistrer ce que je puisse le retrouver plus tard.
Si vous avez besoin de travailler sur un dossier quelque part, comme 'Program Files', mais ne veulent pas l'invite UAC à chaque fois, une solution de contournement consiste à prendre possession du dossier:
L'enregistrer en tant que 'letmewrite.chauve-souris " ou quoi que ce soit.
Obtenir un couple de l'Explorateur windows ouvrir de sorte que vous pouvez voir à la fois le dossier que vous souhaitez accéder et letmewrite.chauve-souris".
Faites glisser le dossier que vous souhaitez accéder à sur " letmewrite.bat'
OriginalL'auteur trapper_hag