টার্মিনালের মাধ্যমে ম্যাভারিকসে কম্পিউটার (সহায়ক ডিভাইস) নিয়ন্ত্রণ করার জন্য অ্যাপ্লিকেশনটিকে মঞ্জুর করবেন?


10

আমি বর্তমানে মাভেরিক্স ১০.৯-এর স্বয়ংক্রিয় ইনস্টলেশন নিয়ে কাজ করছি। আমার নেটবুট সেট আপ আছে। সবকিছুই ঠিক আছে যতক্ষণ না আমি অ্যাপ্লিক্রিপ্ট কার্যকর করতে চাই works নতুন সংস্করণ প্রকাশের পর থেকে আমাকে সেই স্ক্রিপ্টগুলি ম্যানুয়ালি সক্ষম করতে হবে। সহায়ক ডিভাইসের তালিকায় অ্যাপ্লিকেশন যুক্ত করতে শেল স্ক্রিপ্টে আমি কি কোনও আদেশ ব্যবহার করতে পারি? অথবা সম্ভবত কিছু প্লাস্ট রয়েছে যা এটির কাজ করার জন্য সম্পাদনা করতে হবে?


আপনি যা দেখছেন এটাই আমি নিশ্চিত নই, তবে এই নিবন্ধটি সাহায্য করতে পারে: সমর্থন.apple.com/kb/HT5914
জে থম্পসন

উত্তর দেওয়ার জন্য আপনাকে ধন্যবাদ। আমি সমাধানটি অনুসন্ধান করার সময় আমি এই নিবন্ধটিতে হোঁচট খেয়েছি। আমি যা খুঁজছি তা নয় কারণ এই সমাধানটি এখনও জিইউআই ইন্টারেক্টিভ ব্যবহার করে।
ক্যারোলবার্লিনস্কি

@ কারোলবার্লিনস্কি আপনি কীভাবে ব্যবহার করেছেন? কমান্ড লাইন বা একটি নন জিইউআই পদ্ধতিতে কীভাবে সহায়ক ডিভাইসে কোনও অ্যাপ যুক্ত করতে হয় তা আমি এখনও চেষ্টা করার চেষ্টা করছি। ধন্যবাদ আব্রাহাম
অ্যাবস্টারটি

উত্তর:


12

সেটিংস এতে সংরক্ষণ করা হয় /Library/Application Support/com.apple.TCC/TCC.db:

$ sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'select * from access'
kTCCServiceAccessibility|com.apple.ScriptEditor2|0|1|0|��

kTCCServiceAccessibility|com.red-sweater.FastScripts|0|1|0|��

kTCCServiceAccessibility|com.apple.AccessibilityInspector|0|1|0|��

kTCCServiceAccessibility|com.slate.Slate|0|1|0|��

kTCCServiceAccessibility|com.apple.Automator|0|1|1|
kTCCServiceAccessibility|com.googlecode.iterm2|0|1|1|

প্রদত্ত স্কিমাটি sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db '.schema access'হ'ল:

CREATE TABLE access (service TEXT NOT NULL, client TEXT NOT NULL, client_type INTEGER NOT NULL, allowed INTEGER NOT NULL, prompt_count INTEGER NOT NULL, csreq BLOB, CONSTRAINT key PRIMARY KEY (service, client, client_type));

আমার ইনস্টলেশনের উপর গত চার কলাম ( client_type, allowed, prompt_count, এবং csreq) হয় 0|1|0|\xfa\xde\x0cযে পরে যোগ করা হয় নি অ্যাপ্লিকেশনের জন্য "example.app" would like to control this computer using accessibility featuresডায়ালগ দেখানো হয়েছিল এবং 0|1|1|অ্যাপ্লিকেশন যে আমি তাদের সিস্টেম পছন্দসমূহ মধ্যে লিস্টে ড্রপ দ্বারা যোগ জন্য।

~/Library/Preferences/com.apple.universalaccessAuthWarning.plist অ্যাপ্লিকেশনগুলির একটি তালিকা রয়েছে যার জন্য সতর্কতা ডায়ালগ প্রদর্শিত হয়েছে:

$ defaults read com.apple.universalaccessAuthWarning
{
    "/Applications/Automator.app" = 1;
    "/Applications/Automator.app/Contents/MacOS/Automator" = 1;
    "/Applications/FastScripts.app" = 1;
    "/Applications/FastScripts.app/Contents/MacOS/FastScripts" = 1;
    "/Applications/Slate.app" = 1;
    "/Applications/Slate.app/Contents/MacOS/Slate" = 1;
    "/Applications/Utilities/AppleScript Editor.app" = 1;
    "/Applications/Utilities/AppleScript Editor.app/Contents/MacOS/AppleScript Editor" = 1;
    "/Applications/Xcode.app/Contents/Applications/Accessibility Inspector.app" = 1;
    "/Applications/Xcode.app/Contents/Applications/Accessibility Inspector.app/Contents/MacOS/Accessibility Inspector" = 1;
    "/Applications/iTerm.app" = 1;
    "/Applications/iTerm.app/Contents/MacOS/iTerm" = 1;
    "/Users/lauri/Desktop/aa.app" = 1;
    "/Users/lauri/Desktop/aa.app/Contents/MacOS/applet" = 1;
    "com.apple.AccessibilityInspector" = 1;
    "com.apple.Automator" = 1;
    "com.apple.ScriptEditor.id.aa" = 1;
    "com.apple.ScriptEditor2" = 1;
    "com.red-sweater.FastScripts" = 1;
    "com.slate.Slate" = 1;
}    

যদিও আমি কোনও অ্যাপ্লিকেশনের জন্য সহায়ক ডিভাইসগুলিতে কীভাবে প্রকৃতপক্ষে অ্যাক্সেসের অনুমতি দেব তা আমি বুঝতে পারি না। উদাহরণস্বরূপ আমি এই আদেশগুলি চালনার চেষ্টা করেছি:

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'insert into access values ("kTCCServiceAccessibility","com.apple.ScriptEditor.id.qq",0,1,0,"'$'\xfa\xde\x0c''");'
defaults write com.apple.universalaccessAuthWarning com.apple.ScriptEditor.id.qq -bool true
defaults write com.apple.universalaccessAuthWarning /Users/lauri/Desktop/qq.app -bool true
defaults write com.apple.universalaccessAuthWarning /Users/lauri/Desktop/qq.app/Contents/MacOS/applet -bool true
sudo killall tccd

আমি পরিবর্তনগুলি প্রয়োগ করতে পুনরায় আরম্ভ করার চেষ্টা করেছি এবং সর্বশেষ চারটি কলাম সেট করেছিলাম 0,1,1,""


2
আপনার মতামতের জন্য অনেক ধন্যবাদ। আমি এটি একটি workaround ধন্যবাদ করতে সক্ষম হয়েছি। টিসিডিডি প্রসেসটি হত্যা করা যায় না, কেবলমাত্র পুনরায় আর্টার্টই এখানে যথেষ্ট। অ্যাক্সেসিবিলিটি প্রয়োজন এমন অ্যাপটি আমি শুরু করি, তারপরে sudo sqlite3 / লাইব্রেরি / অ্যাপ্লিকেশন \ সমর্থন / com.apple.TCC / TCC.db 'আপডেট অ্যাক্সেস সেট অনুমোদিত = 1' এবং তারপরে সিস্টেমটি পুনরায় চালু করুন। এটা কাজ করে। আবারও ধন্যবাদ (যদি আপনাকে তালিকা থেকে একটি অ্যাপের জন্য অ্যাক্সেসের প্রয়োজন হয় তবে আপনি নিজের স্কয়ারে যেখানে ক্লোজ যোগ করতে পারেন)।
ক্যারোলবার্লিনস্কি

দুর্দান্ত দোষের জন্য +1। ভিত্তিক কর্মক্ষম প্রোগ্রামের জন্য অ্যাবস্টারটির উত্তর দেখুন sudo sqlite3 ...। অনুমতি প্রদানের~/Library/Preferences/com.apple.universalaccessAuthWarning.plist সাথে জড়িত নয় , এটি কেবল রেকর্ড করে যে বারবার সতর্কতা সহ ব্যবহারকারীদের বিরক্ত করা এড়াতে কোনও সতর্কতা প্রদর্শিত হয়েছিল কিনা।
mklement0

2
??( \xfa\xde\x0c) মান থেকে ডালপালা csreqকলাম, যা নির্দিষ্ট অ্যাপ্লিকেশন মন্দের একটা ফিঙ্গারপ্রিন্ট উপস্থিত রয়েছে; ওএসএক্স পরিচালনা করে যা স্বয়ংক্রিয়ভাবে পর্দার আড়ালে থাকে - এটি কখনই নির্দিষ্ট করার প্রয়োজন হয় না। আসল মান অনেক দীর্ঘ; 3 টি বাইটে ছাঁটাইটি বাইনারি মান (ডাটা টাইপ BLOB) আউটপুট দেওয়ার চেষ্টা করে আসে যেন এটি একটি স্ট্রিং হয়, যার ফলে আউটপুটটি প্রথম NUL বাইটে থামতে পারে ( ইউটিএফ 8 এনকোডিংয়ে ?স্টেমটি \xfaএবং \xdeবৈধ অক্ষর না হয়ে থাকে \x0c) একটি উল্লম্ব ট্যাব কার্যকরভাবে একটি লাইন বিরতি তৈরি করে)।
mklement0

csreqকলাম অ্যাপের জন্য কম্পাইল মনোনীত প্রয়োজনীয়তা রয়েছে, দেখতে goo.gl/z10vl এবং অ্যাপলের TN2206 গভীরতা কোড সাইন ইন গাইড। মনোনীত প্রয়োজনীয়তাগুলি মূলত এমন একটি স্ক্রিপ্ট যা বান্ডেল আইডি এবং শংসাপত্রগুলি পরীক্ষা করে কোনও অ্যাপের পরিচয় যাচাই করে।
জুল

1
এই কৌশলটি ড্রপবক্স ব্যবহারকারীর সাথে জড়িত না হয়ে অ্যাক্সেসিবিলিটি এনটাইটেলমেন্ট যুক্ত করার জন্য ব্যবহার করেছে বলে মনে হচ্ছে: আপেলহেল্পট্রাইটার.কম
08/29

8

নীচের কমান্ডগুলি অনুসরণ করে আপনি ফাইলটি যুক্ত করতে পারেন।

আপনি সাহায্যকারী ডিভাইসগুলিতে যুক্ত করার চেষ্টা করছেন এমন অ্যাপ্লিকেশনটির জন্য এই কমান্ডটি বান্ডিল শনাক্তকারীকে খুঁজে পাবে।

/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/enterapplicaitonnamehere.app/Contents/Info.plist

ধরা যাক আপনি যে অ্যাপ্লিকেশনটি যুক্ত করার চেষ্টা করছেন সেটি হ'ল এসকেওয়াইপি। তারপরে আপনি এটি নীচে প্রবেশ করান:

/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/Skype.app/Contents/Info.plist

এবং আপনার বান্ডিল শনাক্তকারী হবেন:

com.skype.skype

তারপরে আপনি এই আউটপুটটি নীচের কমান্ডটিতে ব্যবহার করুন:

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "REPLACE INTO access VALUES('kTCCServiceAccessibility','',0,1,1,NULL);" 

স্কাইপ এর জন্য এটি দেখতে এই রকম হবে:

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "REPLACE INTO access VALUES('kTCCServiceAccessibility','com.skype.skype',0,1,1,NULL);" 

অ্যাপ্লিকেশন অপসারণ করতে আপনি ব্যবহার করতে হবে sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "delete from access where client='com.skype.skype';"


+1, তবে দৃ rob়তার জন্য REPLACE INTOপরিবর্তে ব্যবহার করা ভাল INSERT INTOযাতে কমান্ডটি কাজ করে তা সুনিশ্চিত করার জন্য ডাটাবেসটিতে ইতিমধ্যে নির্দিষ্ট অ্যাপ্লিকেশনটির জন্য প্রবেশিকা রয়েছে কিনা।
mklement0

@mklement অ্যাপ্লিকেশনটি ইতিমধ্যে ডাটাবেসে উপস্থিত না থাকলে অ্যাপ্লিকেশনটি যুক্ত করবে?
অ্যাবস্টারটি

হ্যাঁ, এটি হবে ( REPLACE INTOআরও বর্ণনামূলক জন্য একটি উপাধি INSERT OR REPLACE INTO)।
mklement0

1
প্রতিস্থাপন অন্তর্ভুক্তি INSERT INTO এর চেয়ে নিখুঁত এবং আরও ভালভাবে কাজ করছে।
অ্যাবস্টারটি

এই পদ্ধতিটি কী। প্রিফ্পেন বান্ডেলের ভিতরে থাকা এক্সিকিউটেবল বাইনারিগুলির জন্য কাজ করে?
জেসনোলজি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.