Windows बैच (.bat) फ़ाइल पर हस्ताक्षर कैसे करें?


8

मैं विंडोज 7 चला रहा हूं और जब मैं एक बैच फ़ाइल चलाने की कोशिश करता हूं, तो यह कहता है, "प्रकाशक को सत्यापित नहीं किया जा सकता है। क्या आप वाकई इस सॉफ़्टवेयर को चलाना चाहते हैं?"

इसलिए जब मैं इसे अपने कोड साइनिंग सर्टिफिकेट के साथ साइन करने की कोशिश करता हूं, तो यह कहता है "साइनटूल एरर: इस फाइल फॉर्मेट पर हस्ताक्षर नहीं किए जा सकते क्योंकि यह मान्यता प्राप्त नहीं है।"

तो मैं एक कठिन जगह एक चट्टान के बीच फंस गया हूं। क्या संदेश को खत्म करने का कोई तरीका है?

स्क्रीनशॉट


1
इसे PowerShell स्क्रिप्ट के रूप में फिर से लिखें, और उस पर हस्ताक्षर करें? मैंने कभी भी हस्ताक्षरित बैच फ़ाइलों के बारे में नहीं सुना है, स्वयं।
इस्जी

आप बैच फ़ाइलों पर हस्ताक्षर नहीं करते हैं। ऐसा लगता है कि आपकी बैच फ़ाइल कुछ और कह रही है जिसे साइन किया जाना चाहिए।
मार्क एलन

1
प्रॉम्प्ट का स्रोत क्या है? यही है, शीर्षक-बार और आइकन क्या है? क्या यह वास्तव में एक विंडोज प्रांप्ट है या तीसरे पक्ष के सुरक्षा कार्यक्रम से एक संकेत है? इसका स्क्रीनशॉट लें और इसे प्रश्न में जोड़ें।
सिंटेक


@ सीनशेयर, अगर ऐसा है, तो टेकटर्टल सही है; नेटवर्क पर कुछ भी विंडोज द्वारा एक संदिग्ध नज़र से देखा जाता है, इसलिए आपको इसे स्थानीय रूप से कॉपी करने या ट्रस्टेड ज़ोन में स्थान जोड़ने की आवश्यकता होगी।
सिनटेक

जवाबों:


4

मुझे एक समान संदेश मिलता है यदि मैं एक नेटवर्क स्थान से बैच फ़ाइलें (या अन्य निष्पादन योग्य) चलाता हूं। यदि यह मामला है, तो आप इसे स्थानीय ड्राइव पर ले जाने पर विचार कर सकते हैं। एक अन्य विकल्प नेटवर्क पर एक को लॉन्च करने के लिए स्थानीय ड्राइव पर एक अलग बैच फ़ाइल का उपयोग करना है। लॉन्चिंग बैच फ़ाइल में केवल एक पंक्ति होनी चाहिए:

@call \\network\folder\batch.bat

Windows स्थानीय फ़ाइल पर नहीं होगा, और एक बार वह फ़ाइल चल रही हो, तो वह नेटवर्क संस्करण को बिना समस्या के कॉल कर सकती है।


@Sosukodo, तो E:नेटवर्क-मैप्ड ड्राइव है?
19

Sort-of ;-) मैं मैक होस्ट पर एक वर्चुअलबॉक्स विंडोज 7 अतिथि चला रहा हूं। E: एक वर्चुअलबॉक्स साझा फ़ोल्डर है। मुझे नहीं पता था कि साझा किए गए फ़ोल्डर को एक नेटवर्क ड्राइव माना जाएगा लेकिन जब आपने इसका उल्लेख किया, तो यह समझ में आया।

4

आप बैच फ़ाइलों पर हस्ताक्षर नहीं करते हैं। ऐसा लगता है कि आपकी बैच फ़ाइल कुछ और कह रही है जिसे साइन किया जाना चाहिए।

संपादित करें: अब जब आपने एक बैच फ़ाइल पोस्ट की है, तो हम देख सकते हैं कि यह नेटवर्क स्थान के कारण है। या, कभी-कभी ऐसा होता है यदि आप किसी नेटवर्क स्थान से फ़ाइल कॉपी करते हैं। बाद के मामले में, ऐसा इसलिए है क्योंकि विंडोज ने फ़ाइल को किसी अन्य इंटरनेट ज़ोन में वैकल्पिक डेटा स्ट्रीम के माध्यम से टैग किया है। आप इसे दो तरीकों से देख सकते हैं:

  1. इंट्रानेट ज़ोन के लिए, इंटरनेट एक्सप्लोरर में अपने सुरक्षा क्षेत्र बदलें।
  2. फ़ाइल के लिए वैकल्पिक डेटा स्ट्रीम को नष्ट करने के लिए टाइप कमांड का उपयोग करें। (Sysinternals कि यह कर सकते हैं से स्ट्रीम। Exe भी है।) type thefile.bat > %temp%\newfile.bat & type %temp%\newfile.bat > thefile.bat

3

आप जो देख रहे हैं वह एक सामान्य संकेत है जो विंडोज जब भी डाउनलोड की गई किसी भी फ़ाइल को खोलने का प्रयास करता है। क्या होता है कि जब आप कोई फ़ाइल डाउनलोड करते हैं, तो उसे एक ध्वज के साथ टैग किया जाता है जो इंगित करता है कि यह इंटरनेट से आया है और इस प्रकार संभावित रूप से खतरनाक है। जब आप ऐसी फ़ाइल को चलाने का प्रयास करते हैं, तो विंडोज यह देखने के लिए जांचता है कि क्या यह वैध हस्ताक्षर है ताकि यह निर्धारित किया जा सके कि क्या उस पर भरोसा किया जा सकता है।

आप क्या कर सकते हैं फ़ाइल के गुणों में अनब्लॉक बटन का उपयोग करके फ़ाइल से ध्वज को हटा दें, इसके बाद, जब भी आप इसे चलाने का प्रयास करेंगे, तो Windows आपको अकेला छोड़ देगा:

यहाँ छवि विवरण दर्ज करें


समस्या यह है कि बैच-फाइलें पाठ-फाइलें हैं जिन्हें निष्पादित किया जा सकता है। हालांकि यह एक पाठ-फ़ाइल पर हस्ताक्षर करना संभव है, यह द्विआधारी डेटा के एक झुंड को उस फ़ाइल में जोड़ना होगा जो एक बैच-फ़ाइल के लिए खराब है क्योंकि यह अस्पष्ट है और जब कमांड-दुभाषिया इसे निष्पादित करने का प्रयास करता है तो समस्या पैदा होगी। हस्ताक्षर पर टिप्पणी करना या तो काम नहीं करेगा क्योंकि तब हस्ताक्षर भ्रष्ट हो जाता है।

इसलिए, बैच फ़ाइल पर हस्ताक्षर करने से काम नहीं चलने वाला है।

आपको यह पता करने की आवश्यकता है कि इसे चलाने की कोशिश करते समय सिस्टम आपको क्यों प्रेरित कर रहा है। डिफ़ॉल्ट रूप से, विंडोज़ बैच-फ़ाइलों को चलाने से पहले नहीं पूछता है, इसलिए आपके पास एक विशेष नीति या सुरक्षा कार्यक्रम होना चाहिए जो इसे अवरुद्ध करता है। यह देखने के लिए कि क्या आप अक्षम कर सकते हैं या बहिष्करण जोड़ सकते हैं, यह देखने के लिए अपना सुरक्षा कार्यक्रम देखें।

बैच-फ़ाइल की सामग्री को यह देखने के लिए जांचें कि क्या वह एक निष्पादन योग्य चल रहा है जो हस्ताक्षरित नहीं है (हालांकि फिर से, डिफ़ॉल्ट रूप से, विंडोज निष्पादन योग्य के लिए संकेत नहीं देता है जब तक कि इसे डाउनलोड नहीं किया गया था या उन्नत विशेषाधिकार की आवश्यकता है, इसलिए अपनी सेटिंग्स की जांच करें)।


हस्ताक्षर पर पहुंचने से पहले आपको स्क्रिप्ट से बाहर निकलने में सक्षम होना चाहिए, नहीं?
शपथ

@ शेरा, हां और नहीं। आप goto :eofहस्ताक्षर से पहले सम्मिलित कर सकते हैं , लेकिन फिर वह फ़ाइल के हैश को बदल देगा और हस्ताक्षर को अमान्य कर देगा और इस प्रकार फ़ाइल भ्रष्ट / असुरक्षित हो जाएगी। मुझे लगता है कि फ़ाइल पर हस्ताक्षर करने से पहले आपके पास वहां रेखा हो सकती है , हालांकि यह काम करना चाहिए। प्रयास करने के लिए दिलचस्प प्रयोग ...
Synetech

2
आप फ़ाइल को अनटैग करने के लिए - यहां तक ​​कि बायनेरीज़ पर भी टाइप कमांड का उपयोग कर सकते हैं। मुझे हर व़क्त यह करना है। टाइप करें oldfile> newfile (और फिर) ADS टैग के बिना newfile> oldfile परिणाम पुराने में टाइप करें।
मार्क एलन

हेहे, चतुर। यह तकनीकी रूप से ध्वज को नहीं
उतार

0

आप .bat फ़ाइल को PowerShell स्क्रिप्ट में भी बदल सकते हैं, signtool इन फ़ाइलों पर हस्ताक्षर करने का समर्थन करता है।


यह प्रश्न का उत्तर प्रदान नहीं करता है। किसी लेखक से स्पष्टीकरण मांगने या उसका अनुरोध करने के लिए, उनके पोस्ट के नीचे एक टिप्पणी छोड़ दें। - समीक्षा से
बरगी

जब तक कोई समर्पित SIP नहीं लिखता, तब तक @Burgi यह डिबेट योग्य है, .bat फ़ाइलों पर हस्ताक्षर नहीं किए जा सकते। अब के लिए निकटतम समाधान एक हस्ताक्षरित PowerShell स्क्रिप्ट है।
इमैनुएल

1
फाइट क्लब का नियम # 42 "वर्कअराउंड उत्तर हैं।" तो यह एक उत्तर है। (लेकिन अन्य बेहतर हैं।)
स्कॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.